如何把对象里的数组取出来合成一个新数组?

一个很弱鸡的问题,望各位前辈不要见笑。

var obj = {
    "1": [111, 222],
    "2": [333],
    "3": [444, 555]
};

如题,如何合成如下的新数组呢?

arr = [111, 222, 333, 444, 555]
阅读 8.2k
2 个回答

兼容性好的话

var obj = {
    "1": [111, 222],
    "2": [333],
    "3": [444, 555]
};
var arr = [];
for(var i in obj){
    arr.push(...obj[i]);
}
console.log(arr);

或者

var obj = {
    "1": [111, 222],
    "2": [333],
    "3": [444, 555]
};
var arr = [];
for(var i in obj){
    for(var j in obj[i]){
        arr.push(obj[i][j]);
    }    
}
console.log(arr);
var arr = [];
for(var i in obj){
    arr=arr.concat(obj[i]);
}
console.log(arr);

合理的利用ES2015特性会很简单。

var obj = {
    "1": [111, 222],
    "2": [333],
    "3": [444, 555]
};
let arr = Object.values(obj).reduce((a,b)=> a.concat(b));//[ 111, 222, 333, 444, 555 ]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题