как добавить ключ объекта в массив? - PullRequest
2 голосов
/ 14 января 2020

Ребята. У меня есть такой массив

array = [{name:"A",data:"..."},{name:"B",data:"..."},{name:"C",data:"..."}]

И я хочу изменить этот массив на

array = [ "A":{name:"A",data:"..."},"B":{name:"B",data:"..."},"C":{name:"C",data:"..."}

Как я могу установить ключ объекта из его собственного значения?

Ответы [ 4 ]

2 голосов
/ 14 января 2020

Для получения объекта вы можете взять Object.fromEntries с сопоставленными парами ключ / значение

var array = [{ name: "A", data: "..." }, { name: "B", data: "..." }, { name: "C", data: "..." }],
    result = Object.fromEntries(array.map(o => [o.name, o ]));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
2 голосов
/ 14 января 2020

Попробуйте это:

console.log(array.map(el => ({[el.name]: el})));
1 голос
/ 14 января 2020

JavaScript массив не работает таким образом. Значение индекса массива может иметь только возрастающее число c индексов ([0, 1, ..., n]). Если вы не хотите создавать такой список, вы можете создать объект вместо массива.

const array = [{name:"A",data:"..."},{name:"B",data:"..."},{name:"C",data:"..."}];
const newList = {};

array.forEach(obj => {
    newList[obj.name] = obj;
});

console.log({ newList });

Таким образом, вы можете создать объект из массива. Затем вы можете l oop ключи объекта, как в массиве, используя:

Object.keys(newList).forEach((key) => {
  console.log(newList[key]);
})

. Надеюсь, это поможет.

0 голосов
/ 15 января 2020

Просто сделай это.

var arr = [{name:"A",data:"..."},{name:"B",data:"..."},{name:"C",data:"..."}]

var output = arr.map(elem => ({[elem.name]: elem}))

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