Как объединить два массива в один объект с парой ключ-значение? - PullRequest
0 голосов
/ 06 июня 2018

У меня есть 2 массива, массив a содержит ключи, а массив b содержит их значения

let a = ['name', 'options', 'address', 'options', 'gender', 'options'];
let b = ['john doe', 'a', 'india', 'b', 'male', 'c'];

Я хочу вывод, подобный этому

 { 
  'name': 'john doe',
  'options': 'a, b, c',
  'address': 'india',
  'gender': 'male'
 }

Ответы [ 3 ]

0 голосов
/ 06 июня 2018

Альтернативный метод будет таким, как показано ниже.Это повторяет количество раз a.length, получает значение a и добавляет его в качестве ключа к c, где значением ключа является значение из b.Вот описание того, как это работает:

Для каждого элемента в a: если в c нет элемента с именем ключа a [i], создайте ключ и установите для него значение из b [i],Если элемент уже существует в c (тогда ключ должен представлять массив, а не один элемент), если это значение является единственным элементом, сделать его массивом и заново вставить это первое значение, а затем в любом случае нажатьновый элемент в этом массиве.

let a = ['name', 'options', 'address', 'options', 'gender', 'options','options'];
let b = ['john doe', 'a', 'india', 'b', 'male', 'c', 'd'];

let c = {};

for (let i=0; i<a.length; i++) {
    if (typeof c[a[i]] === 'undefined') {
        c[a[i]] = b[i];
    } else {
        if (c[a[i]] instanceof Array === false) {
            c[a[i]] = [c[a[i]]];
        }
        c[a[i]].push(b[i]);
    }
}

console.log(c);
0 голосов
/ 30 августа 2019
  invert(object){ 
    let invertedObject ={};
    for(let key in object){
      const originalValue = object[key];
      invertedObject = {originalValue : key}
    }
    return invertedObject
  }
0 голосов
/ 06 июня 2018

Использование Array.reduce

let a = ['name', 'options', 'address', 'options', 'gender', 'options'];
let b = ['john doe', 'a', 'india', 'b', 'male', 'c'];

let r = a.reduce((o,c,i) => {o[c] = o[c] ? o[c] + ", " + b[i]:b[i]; return o;}, {})
console.log(r);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...