20

2 つの配列をマージして値が交互になるようにする jQuery メソッドを探しています。

var array1 = [1,2,3,4,5];
var array2 = ['a', 'b', 'c', 'd', 'e'];

私が望む結果は次のとおりです。

var arrayCombined = [1, 'a', 2, 'b', 3, 'c', 4, 'd', 5, 'e'];

JSでこれを行うのは簡単なことですが、これを行うjQueryメソッドを求めていることに注意してください。

4

6 に答える 6

35

map次の方法を使用できます。

var array1 = [1, 2, 3, 4, 5];
var array2 = ['a', 'b', 'c', 'd', 'e'];

var arrayCombined = $.map(array1, function(v, i) {
  return [v, array2[i]];
});

console.log(arrayCombined);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

デモ: http://jsfiddle.net/Guffa/hmUy6/

于 2012-11-06T15:14:17.250 に答える
18

jQuery を使用する必要がある場合は、壊れた$.map実装を利用できます。

var result = $.map(array1, function(v, i) {
                                return [v, array2[i]];
                           });

jQuery$.mapは、返された配列を平坦化し、必要な結果を提供します。

デモ: http://jsfiddle.net/8rn2w/


純粋な JS ソリューション:

var result = array1.reduce(function(arr, v, i) {
                              return arr.concat(v, array2[i]); 
                           }, []);

デモ: http://jsfiddle.net/8rn2w/1/

于 2012-11-06T15:14:37.013 に答える
6

Array.prototype.flat()Array.prototype.map( )を使用した別のソリューションです。

var array1 = [1, 2, 3, 4, 5];
var array2 = ['a', 'b', 'c', 'd', 'e'];

var result = array1.map(
  (element, index) => [element, array2[index]]
).flat();

console.log(result);

于 2020-01-27T16:59:14.643 に答える
3

次のようなことを試してください:

function merge(array1, array2) {
  if (array1.length == array2.length) {
    var c = [];
    for (var i = 0; i < array1.length; i++) {
      c.push([array1[i], array2[i]]);
    }
    return c;
  }
  return null;
}
于 2012-11-06T15:13:00.443 に答える
1

検索エンジンでここに到着し、Lodash オプションが必要な場合:

_.compact(_.flatten(_.zip(array1, array2)))
于 2021-09-24T16:48:21.330 に答える