Карта массив объектов - PullRequest
       4

Карта массив объектов

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

Пожалуйста, внимательно прочитайте вопрос, это не дубликат:

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

var obj = [{ 'key1' : 'value1' }, { 'key2' : 'value2' }];

Я хотел бы отобразить массив для получения ключей и значений для каждого объекта. Что-то вроде:

obj.map((key, val) => console.log(key, val));

Я уже пробовал много таких вещей, как Object.entries(obj), но это всегда приводит к сложному решению со многими скобками, такими как Object.entries(obj)[0][1]

Есть ли простой, хороший и эффективный способ сопоставить массив объектов? Примечание. Мне нужен ключ и значение для каждого объекта

Ответы [ 3 ]

3 голосов
/ 25 января 2020

Похоже, вы хотите только распечатать его или получить к ним доступ:

.map меняет массив на другой массив, который не похож на то, что вы ищете.

var objs = [{ 'key1' : 'value1' }, { 'key2' : 'value2' }];

objs.forEach(obj => { 
  for (let p in obj) console.log(p, obj[p]); 
});

Если вы ищете key1=value1&key2=value2 в качестве ответа и знаете, что у вас есть только 1 ключ и значение в каждом объекте, то это:

let objs = [{ 'key1' : 'value1' }, { 'key2' : 'value2' }];

let s = objs.map(obj => `${Object.keys(obj)[0]}=${Object.values(obj)[0]}`).join("&");

console.log(s);

Но вы, вероятно, захотите использовать encodeURIComponent() для кодирования параметров, делая это:

let objs = [{ 'key1' : 'value1 hello' }, { 'key2' : 'value2 & 3' }];

let s = objs.map(obj => `${encodeURIComponent(Object.keys(obj)[0])}=${(encodeURIComponent(Object.values(obj)[0]))}`).join("&");

console.log(s);

Если все ваши ключи имеют буквенное обозначение c и символы подчеркивания, то вам не нужно использовать encodeURIComponent() для клавиши.

1 голос
/ 25 января 2020

Не так чисто, как ответ @nopole, но такого рода достигается то, что вы хотите для ключевого, ценностного объекта.

var objs = [{ 'key1' : 'value1' }, { 'key2' : 'value2' }];

objs.forEach(obj => { 
  // loop over keys-and-values
  for (let [key, value] of Object.entries(obj)) {
    console.log(key, value);
  }
});

Также это работает для объекта с более чем одним ключом:

var objs = [{ 'key1' : 'value1', "key2":"value2" }, { 'key3' : 'value3' }];

objs.forEach(obj => { 
  // loop over keys-and-values
  for (let [key, value] of Object.entries(obj)) {
    console.log(key, value);
  }
});
1 голос
/ 25 января 2020
var obj = [{ 'key1' : 'value1' }, { 'key2' : 'value2' }];
obj.forEach(el => {
  for (var prop in el) {
    console.log(prop, el[prop])
  }
})

// results: 
// key1 value1
// key2 value2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...