需要连接数组(不知道会有多少)(js)

时间:2017-08-24 05:53:12

标签: javascript arrays

我的arr的示例视图。

enter image description here

需要连接最深的对象,

例如,

有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"}

]]]]

2 个答案:

答案 0 :(得分:1)

您可以展平数组,然后将结果连接到数组中。

我使用了我的回购邮件的one代码。

&#13;
&#13;
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;
&#13;
&#13;

答案 1 :(得分:0)

function flatten(arr) {
  if (Array.isArray(arr)) return 
Array.prototype.concat.apply([], arr.map(flatten));
  return arr;
}

这是flatten的基本递归解决方案。