jQueryで配列を単純に平坦化する方法は? 私は持っている:
[1, 2, [3, 4], [5, 6], 7]
そして私が欲しい:
[1, 2, 3, 4, 5, 6, 7]
jQueryで配列を単純に平坦化する方法は? 私は持っている:
[1, 2, [3, 4], [5, 6], 7]
そして私が欲しい:
[1, 2, 3, 4, 5, 6, 7]
jQuery.mapを使用できます。これは、jQuery ライブラリが既に読み込まれている場合に使用する方法です。
$.map( [1, 2, [3, 4], [5, 6], 7], function(n){
return n;
});
戻り値
[1, 2, 3, 4, 5, 6, 7]
JavaScript の機能を使用します。
var a = [[1, 2], 3, [4, 5]];
console.log( Array.prototype.concat.apply([], a) );
//will output [1, 2, 3, 4, 5]
jqueryを使用して深くネストされた配列をフラット化する方法は次のとおりです。
$.map([1, 2, [3, 4], [5, [6, [7, 8]]]], function recurs(n) {
return ($.isArray(n) ? $.map(n, recurs): n);
});
戻り値:
[1, 2, 3, 4, 5, 6, 7, 8]
jQuery.mapとjQuery.isArrayを利用します。
var a = [1, 2, [3, 4], [5, [6, [7, 8]]]];
var b = [];
function flatten(e,b){
if(typeof e.length != "undefined")
{
for (var i=0;i<e.length;i++)
{
flatten(e[i],b);
}
}
else
{
b.push(e);
}
}
flatten(a,b);
console.log(b);
flatten 関数がそれを行うべきであり、これには jQuery は必要ありません。これをすべて Firebug にコピーして実行するだけです。
使用できますjQuery.map()
:
callback( value, indexOrKey )各アイテムを処理する関数。関数の最初の引数は値です。2 番目の引数は、配列またはオブジェクト プロパティのインデックスまたはキーです。この関数は、配列に追加する任意の値を返すことができます。返された配列は、結果の配列にフラット化されます。関数内では、これはグローバル (ウィンドウ) オブジェクトを参照します。
複数のレベルがある場合は、再帰を使用します。
flaten = function(flatened, arr) {
for(var i=0;i<arr.length;i++) {
if (typeof arr[i]!="object") {
flatened.push(arr[i]);
}
else {
flaten(flatened,arr[i]);
}
}
return;
}
a=[1,[4,2],[2,7,[6,4]],3];
b=[];
flaten(b,a);
console.log(b);
古い質問、私は知っていますが...
私はこれが機能し、高速であることがわかりました:
function flatten (arr) {
b = Array.prototype.concat.apply([], arr);
if (b.length != arr.length) {
b = flatten(b);
};
return b;
}