1

配列を 1 レベル平坦化することに関するこの失敗した SO の質問を見てきました。このクエリが同じ穴に陥るかどうかはわかりません。座標の配列でこれが可能かどうか疑問に思います。例えば

var arraysections = [[
  [480, 200],
  [580, 400],
  [680, 100]
],
 [[680, 100],
  [180, 300],
  [280, 100],
  [380, 400]
]];

になる..

var singlearray = [
  [480, 200],
  [580, 400],
  [680, 100],
  [680, 100],
  [180, 300],
  [280, 100],
  [380, 400]
];

arraysections個々のパスとsinglearrayポイントの完全なリストが必要です。ヒントに感謝します。

4

3 に答える 3

4

それはまだ同じです。concat複数の配列をマージするために使用できます。オブジェクトをループすることで、手動で行うことができます。

var singlearray = [];
for (var i = 0; i < arraysections.length; i++) {
    singlearray = singlearray.concat(arraysections[i]);
}

または、次を使用して派手な方法を実行しapplyます。

var singlearray = Array.prototype.concat.apply([], arraysections);

後者は基本的に を呼び出すことで機能し[].concat(arraysections[0], arraysections[1], ...)ます。の最初のパラメータapplyは、使用している配列オブジェクトthis(ここでは空の配列で問題ありません) であり、2 番目のパラメータは に渡される引数の配列ですconcat。concat は一度に複数の配列を組み合わせることができ、arraysectionsすでに配列の配列であるため、ここで問題ありません。

于 2013-11-07T23:49:22.610 に答える