выдвинуть более одного элемента в одном индексе в массиве - PullRequest
0 голосов
/ 23 мая 2018

как вставить более одного элемента в один индекс массива в javascript?

как у меня

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

я хочу, чтобы 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: {
  values: [
    ['YYYY-MM-DD', val1],
    ['YYYY-MM-DD', val2],
    ...,
    ['YYYY-MM-DD', valN]
  ]
}

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Ваш вопрос совсем не корректен, поскольку вы не можете вставить более одного элемента в один и тот же индекс массива.Ваш результат - многомерный массив:

[["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)
0 голосов
/ 23 мая 2018

Предполагая, что вам нужен многомерный массив, вы можете поместить все входные переменные в массив.Используйте reduce и forEach для группировки массива на основе индекса.

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);
...