如何在javascript中组合多个嵌套数组?

如何在javascript中组合多个嵌套数组?,javascript,arrays,Javascript,Arrays,我有两组嵌套数组: var values = [[100, 87.5, 87.5, 87.5, 100, 100], [87.5, 100, 100, 100, 87.5, 87.5], [75, 75, 75, 75, 75, 75], [50, 50, 50, 62.5, 62.5, 62.5], [62.5, 62.5, 62.5, 50, 37.5, 50], [0, 0, 0, 0, 0, 0]]; var date = [["2015", "2004", "2015", "2015

我有两组嵌套数组:

var values = [[100, 87.5, 87.5, 87.5, 100, 100],
[87.5, 100, 100, 100, 87.5, 87.5],
[75, 75, 75, 75, 75, 75],
[50, 50, 50, 62.5, 62.5, 62.5],
[62.5, 62.5, 62.5, 50, 37.5, 50],
[0, 0, 0, 0, 0, 0]];

var date = [["2015", "2004", "2015", "2015", "2015", "2015"],
["2015", "2004", "2015", "2015", "2015", "2015"],
["2015", "2004", "2015", "2015", "2015", "2015"],
["2015", "2004", "2015", "2015", "2015", "2015"],
["2015", "2004", "2015", "2015", "2015", "2015"],
["2015", "2004", "2015", "2015", "2015", "2015"]];
我要做的是在值和日期中组合每个数组:

Get this :[100, 87.5, 87.5, 87.5, 100, 100]
Get this :["2015", "2004", "2015", "2015", "2015", "2015"]
然后像这样组合:

[{y: 100, d:2015},{y:87.5, d: 2004},{y:87.5, d:2015}},{y:87.5, d:2015}},{y:100, d:2015}},{y:100, d:2015}]
例如:


但是整个数组都被添加了。

您可以使用嵌套的值映射

var值=[[100,87.5,87.5,87.5,100,100],[87.5,100,100,87.5,87.5,87.5],[75,75,75,75,75],[50,50,50,62.5,62.5,62.5,62.5,50,37.5,50],[0,0,0,0],
日期=[“2015年”、“2004年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”],
结果=值.map(函数(a,i){
返回a.map(函数(b,j){
返回{d:date[i][j],y:b};
});
});
控制台日志(结果)

。作为控制台包装{max height:100%!important;top:0;}
您可以对值使用嵌套映射

var值=[[100,87.5,87.5,87.5,100,100],[87.5,100,100,87.5,87.5,87.5],[75,75,75,75,75],[50,50,50,62.5,62.5,62.5,62.5,50,37.5,50],[0,0,0,0],
日期=[“2015年”、“2004年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”、“2015年”],
结果=值.map(函数(a,i){
返回a.map(函数(b,j){
返回{d:date[i][j],y:b};
});
});
控制台日志(结果)

.as console wrapper{max height:100%!important;top:0;}
您还需要迭代内部数组

var日期=[“2015”、“2004”、“2015”、“2015”、“2015”、“2015”]、[“2015”、“2004”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”];
var值=[[100,87.5,87.5,87.5,100,100],[87.5,100,100,87.5,87.5,87.5],[75,75,75,75,75],[50,50,50,62.5,62.5,62.5],[62.5,62.5,50,37.5,50],[0,0,0];
var结果=值
//迭代值数组
.map(功能(arr,i1){
//迭代内部数组
//如果您只需要示例中的第一个元素
//删除第一个映射方法并将'arr'替换为'values[0]`并将'date[i1][i2]`替换为'date[0][i2]`
返回arr.map(函数(n,i2){
//根据索引生成所需的数组对象
返回{
y:n,
//使用索引从二维数组日期获取周期
期间:日期[i1][i2]
}
});
});
document.getElementById(“数据”).innerHTML=JSON.stringify(结果,null,3)

您还需要迭代内部数组

var日期=[“2015”、“2004”、“2015”、“2015”、“2015”、“2015”]、[“2015”、“2004”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”、“2015”];
var值=[[100,87.5,87.5,87.5,100,100],[87.5,100,100,87.5,87.5,87.5],[75,75,75,75,75],[50,50,50,62.5,62.5,62.5],[62.5,62.5,50,37.5,50],[0,0,0];
var结果=值
//迭代值数组
.map(功能(arr,i1){
//迭代内部数组
//如果您只需要示例中的第一个元素
//删除第一个映射方法并将'arr'替换为'values[0]`并将'date[i1][i2]`替换为'date[0][i2]`
返回arr.map(函数(n,i2){
//根据索引生成所需的数组对象
返回{
y:n,
//使用索引从二维数组日期获取周期
期间:日期[i1][i2]
}
});
});
document.getElementById(“数据”).innerHTML=JSON.stringify(结果,null,3)

您可以展平这两个阵列,这样做很简单(假设它们的长度相同):

var日期=[[“2015”、“2004”、“2015”、“2015”、“2015”、“2015”],
["2015", "2004", "2015", "2015", "2015", "2015"],
["2015", "2004", "2015", "2015", "2015", "2015"],
["2015", "2004", "2015", "2015", "2015", "2015"],
["2015", "2004", "2015", "2015", "2015", "2015"],
["2015", "2004", "2015", "2015", "2015", "2015"]];
var值=[[100,87.5,87.5,87.5100100],
[87.5, 100, 100, 100, 87.5, 87.5],
[75, 75, 75, 75, 75, 75],
[50, 50, 50, 62.5, 62.5, 62.5],
[62.5, 62.5, 62.5, 50, 37.5, 50],
[0, 0, 0, 0, 0, 0]];
var flatValues=[].concat.apply([],值);
var flatDates=[].concat.apply([],日期);
var结果=flatValues.map(函数(n,i){
返回({y:n,句点:flatDates[i]});
});
document.getElementById(“数据”).innerHTML=JSON.stringify(结果)

您可以展平这两个阵列,这样做很简单(假设它们的长度相同):

var日期=[[“2015”、“2004”、“2015”、“2015”、“2015”、“2015”],
["2015", "2004", "2015", "2015", "2015", "2015"],
["2015", "2004", "2015", "2015", "2015", "2015"],
["2015", "2004", "2015", "2015", "2015", "2015"],
["2015", "2004", "2015", "2015", "2015", "2015"],
["2015", "2004", "2015", "2015", "2015", "2015"]];
var值=[[100,87.5,87.5,87.5100100],
[87.5, 100, 100, 100, 87.5, 87.5],
[75, 75, 75, 75, 75, 75],
[50, 50, 50, 62.5, 62.5, 62.5],
[62.5, 62.5, 62.5
 var result = values.map(function (n, i) {
            return ({ y: n, d: values[i] });
        });
 //the concat will flatten the arrays.
 var result = [].concat.apply([],dates.map(function (subDates, i) {
      //Go throught the sub dates
      return subDates.map(function(date, j){
         //Create the object
         return { y: date, periods: values[i][j] };

     })
 }));

console.log(result);

//Output:
//[{"y":"2015","periods":100},{"y":"2004","periods":87.5},{"y":"2015","periods":87.5},{"y":"2015","periods":87.5},{"y":"2015","periods":100},...]
var resultData = date.map(function(item,indexDate){
  return item.map(function(year, indexYear){
     return {y:year,d:values[indexDate][indexYear]};
   }); 
});