ext*_*.fx 53 javascript arrays jquery flatten
如何在jQuery中简单地展平数组?我有:
[1, 2, [3, 4], [5, 6], 7]
Run Code Online (Sandbox Code Playgroud)
而且我要:
[1, 2, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
Mar*_*lde 59
你可以使用jQuery.map,如果你已经加载了jQuery库,那就是这样.
$.map( [1, 2, [3, 4], [5, 6], 7], function(n){
return n;
});
Run Code Online (Sandbox Code Playgroud)
返回
[1, 2, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
bjo*_*rnd 35
使用JavaScript的力量:
var a = [[1, 2], 3, [4, 5]];
console.log( Array.prototype.concat.apply([], a) );
//will output [1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
Xav*_*avi 25
以下是如何使用jquery来展平深层嵌套数组:
$.map([1, 2, [3, 4], [5, [6, [7, 8]]]], function recurs(n) {
return ($.isArray(n) ? $.map(n, recurs): n);
});
Run Code Online (Sandbox Code Playgroud)
返回:
[1, 2, 3, 4, 5, 6, 7, 8]
Run Code Online (Sandbox Code Playgroud)
dnu*_*tle 11
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);
Run Code Online (Sandbox Code Playgroud)
flatten函数应该这样做,这不需要jQuery.只需将所有这些复制到Firebug中并运行即可.
要以递归方式展平数组,可以使用本机Array.reduce函数.没有必要使用jQuery.
function flatten(arr) {
return arr.reduce(function flatten(res, a) {
Array.isArray(a) ? a.reduce(flatten, res) : res.push(a);
return res;
}, []);
}
Run Code Online (Sandbox Code Playgroud)
执行
flatten([1, 2, [3, 4, [5, 6]]])
Run Code Online (Sandbox Code Playgroud)
回报
[ 1, 2, 3, 4, 5, 6 ]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19077 次 |
| 最近记录: |