在数组

时间:2018-05-23 07:47:50

标签: javascript arrays zingchart

如何在javascript中的一个数组索引处推送多个元素?

像我一样

arr1["2018-05-20","2018-05-21"];
arr2[5,4];

我希望得到的第四个数组如下:

arr4[["2018-05-20",5],["2018-05-21",4]];

尝试这样推动:

arr1.push("2018-05-20","2018-05-21");
arr1.push(5,4);

然后最终成为:

arr4.push(arr1);

但结果并不像预期的那样。请有人帮忙。

实际上我想在zingChart中使用它:

选项数据 创建一个options对象,并添加一个数组值数组。

日历值 在每个数组中,使用以下格式提供日历日期和相应的数字值。

 options: {
  values: [
    ['YYYY-MM-DD', val1],
    ['YYYY-MM-DD', val2],
    ...,
    ['YYYY-MM-DD', valN]
  ]
}

2 个答案:

答案 0 :(得分:0)

您的问题根本不正确,因为您无法在数组的同一索引处推送多个元素。您的结果是一个多维数组:

[["2018-05-20",5],["2018-05-21",4]]
  • 您必须创建一个收集所有数据的多维数组(arrAll)
  • 然后创建另一个多维数组(arrNew)重新排列以前的数据

尝试以下方法:



// Your Arrays
  var arr1 = ["2018-05-20","2018-05-21"];
  var arr2 = [5, 4];
  //var arr3 = [100, 20];
  var arrAll = [arr1, arr2]; 
  //var arrAll = [arr1, arr2, arr3]; 
  
  // New Array definition
  var arrNew = new Array;
  for (var j = 0; j < arr1.length; j++) {
    var arrTemp = new Array
    for (var i = 0; i < arrAll.length; i++) {
      arrTemp[i] = arrAll[i][j];
      if (i === arrAll.length - 1) {
        arrNew.push(arrTemp)
      }
    }
  }
  
  //New Array
  Logger.log(arrNew)
&#13;
&#13;
&#13;

答案 1 :(得分:-1)

假设您需要多维数组,可以将所有输入变量放入数组中。使用reduceforEach根据索引对数组进行分组。

let arr1 = ["2018-05-20","2018-05-21"];
let arr2 = [5,4];

let arr4 = [arr1, arr2].reduce((c, v) => {
  v.forEach((o, i) => {
    c[i] = c[i] || [];
    c[i].push(o);
  });
  return c;
}, []);

console.log(arr4);