Создание одного уникального массива из двух массивов - PullRequest
0 голосов
/ 02 мая 2019

У меня есть два массива (Arr1, Arr2).Я пытаюсь создать один массив, который содержит столько объектов, сколько Arr.1.length (массив объектов), формат которого:

[{name:Arr1[0], Arr2[0],Arr2[1]...etc}, {name:Arr1[1], Arr2[0],Arr2[1]...etc}..... etc]

Работа с частной информацией, поэтому я не могу показатьактуальный код.Для простоты мы рассмотрим два массива:

Arr1[1,2,3,4,5] 
Arr2[6,7,8,9]

Результирующий массив должен быть:

[{name:1,6:'',7:'',8:'',9:''},{name:2,6:'',7:'',8:'',9:''},{name:3,6:'',7:'',8:'',9:''},{name:4,6:'',7:'',8:'',9:''},{name:5,6:'',7:'',8:'',9:''}]

Для простоты просто представьте, что значения выше являются строками, где указаны,Я использовал два цикла for для манипулирования двумя массивами.Есть ли метод для вызова, который облегчит это?

1 Ответ

1 голос
/ 02 мая 2019

Одним из решений является использование Array.map () более Arr1 для сопоставления каждого element этого массива с объектом со свойством name, содержащим element, тогда мы используйте Array.reduce () сверх Arr2, чтобы добавить другой keys с пустыми строковыми значениями.

var Arr1 = [1, 2, 3, 4, 5];
var Arr2 = [6, 7, 8, 9];

var result = Arr1.map(function(name)
{
    let obj = {name}; // or "let obj = {name: name};" if no ES6 support.

    return Arr2.reduce(function(acc, curr)
    {
        acc[curr]= "";
        return acc;
    }, obj);
});

console.log(result);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
...