我的arr的示例视图。
需要连接最深的对象,
例如,有2个数组[{id1:color:grey}] [{id4:color:grey},{id8:color:grey}]
结果需要这样:[{id1:color:grey},{id4:color:grey},{id8:color:grey}]
尝试做一些事但不知道如何连接,我不知道阵列可以是多少
var kkk = [];
for (var i=0; i < arrData.length;i++) {
var his = arrData[i][1];
for(var k=0; k < his.length; k++) {
console.log(his[0])
}
}
我必须在循环中做什么?和循环是否正确?
我的对象:
Array[2]
0:"th"
1:Array[2]
0:Array[1] //this need concat
1:Array[1] //this need concat
["th"
,[[[{"id":4,"color":"grey"},
{"id":5,"color":"grey"},
{"id":6,"color":"grey"},
{"id":7,"color":"grey"},
{"id":8,"color":"grey"},
{"id":9,"color":"grey"},
{"id":10,"color":"grey"},
{"id":11,"color":"grey"},{"id":12,"color":"grey"}]],
[[{"id":19,"color":"grey"},{"id":20,"color":"grey"},{"id":21,"color":"grey"}
]]]]
答案 0 :(得分:1)
您可以展平数组,然后将结果连接到数组中。
我使用了我的回购邮件的one代码。
var arr = [[[{color : "red", id : 1}]],[{color : "green", id : 2}],[[[{color : "yellow", id : 3}]]],[{color : "blue", id : 4}]];
const __flattenReducer = (result,value,valueIndex,arr)=>{
if(value instanceof Array){
return value.reduce(__flattenReducer,result);
}else{
result.push(value);
return result;
}
};
const flatten = function(arr){
if(arr instanceof Array){
return Array.prototype.reduce.apply(arr,[__flattenReducer,[]]);
}else{
throw new TypeError('Expected an array');
}
}
console.log(flatten(arr))
&#13;
答案 1 :(得分:0)
function flatten(arr) {
if (Array.isArray(arr)) return
Array.prototype.concat.apply([], arr.map(flatten));
return arr;
}
这是flatten的基本递归解决方案。