Как преобразовать массив в объект в Javascript без использования циклов? - PullRequest
0 голосов
/ 30 ноября 2018

Я хочу преобразовать следующий массив:

['a', 'b', 'c']

в следующий объект:

{a: 'a', b: 'b', c: 'c'}

Как мне сделать это без использования цикла, конечно?

Ответы [ 6 ]

0 голосов
/ 01 декабря 2018

Вероятно, это самая короткая версия:

console.log( ['a', 'b', 'c'].reduce((o, v) => (o[v] = v, o), {}) )
0 голосов
/ 01 декабря 2018

Вы захотите использовать метод Array.reduce().

Метод redu () выполняет функцию редуктора (которую вы предоставляете) для каждого члена массива, в результате чего получается одно выходное значение.

arr.reduce(callback[, initialValue])

Метод обратного вызова reduce() принимает параметры accumulator и currentValue.

  • аккумулятор: Значение запоминается во всемкаждая итерация метода и в конечном итоге становится окончательным возвращаемым значением.
  • currentValue: Текущий элемент, обрабатываемый в array.

{} предоставляется в качестве последнего аргумента reduce() в качестве начального значения для начала.И с каждой итерацией Array мы добавляем к ней, в конечном итоге, создавая окончательный Object.

Пример: (ES6)

const letters = ['a', 'b', 'c'];

const obj = letters.reduce((accumulator, currentValue) => {
  accumulator[currentValue] = currentValue;
  return accumulator;
}, {});

console.log(obj);

Пример: (ES5)

var letters = ['a', 'b', 'c'];

var obj = letters.reduce(function (accumulator, currentValue) {
  accumulator[currentValue] = currentValue;
  return accumulator;
}, {});

console.log(obj);

Ссылка: Array.prototype.reduce () Документация Mozilla.

0 голосов
/ 30 ноября 2018

object.assign() может решить вашу проблему.

Вот пример.

var array = ['a', 'b', 'c']; 

Object.assign( {}, array);

// {0: "a", 1: "b", 2: "c"}

Новый объект будет иметь такой же индекс с массивом.

Есливы хотите, чтобы значения массива совпадали с ключом.

function arrayToObject( array) 
{  
    var object = array.reduce( (obj, value) => {
        obj[value] = value;
        return obj
    }, {});
    return object;
}
arrayToObject( ['a', 'b', 'c'])
0 голосов
/ 30 ноября 2018

Использование уменьшение

var arr = ['a', 'b', 'c'];


var obj = arr.reduce(function(obj, value) {
     obj[value] = value;
     return obj
}, {});
console.log(obj)
0 голосов
/ 30 ноября 2018

Вы можете сопоставить объекты и объединиться в один объект с помощью Object.assign.

var array = ['a', 'b', 'c'],
    object = Object.assign(...array.map(v => ({ [v]: v })));
    
console.log(object);
0 голосов
/ 30 ноября 2018

Вы можете использовать Array#reduce для получения желаемого результата.

const a = ['a', 'b', 'c'];
const o = a.reduce((s, a) => {
   s[a] = a;
   return s;
}, {});

console.log(o);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...