Ошибки при зацикливании объектов - PullRequest
0 голосов
/ 09 мая 2019

У меня есть объект, скажем, элементы, и я пытаюсь пройтись по этим объектам, и у меня возникают эти ошибки "не удается преобразовать неопределенный или нулевой объект.

let items = {
  id: 1,
  name: "name1",
  currency: "usd"
}
const result = Object.keys(items).map(index => index.name);
console.log(result);

Ответы [ 6 ]

3 голосов
/ 09 мая 2019

Если вы хотите получить ключи, используйте Object.keys.Значения Object.values:

let items = {
  id: 1,
  name: "name1",
  currency: "usd"
};
const keys = Object.keys(items);
const vals = Object.values(items);
console.log(keys);
console.log(vals);
.as-console-wrapper { max-height: 100% !important; top: auto; }

На основании вашего текущего кода с Object.keys, я думаю, вы хотите items[index], а не index.name:

let items = {
  id: 1,
  name: "name1",
  currency: "usd"
}
const result = Object.keys(items).map(index => items[index]);
console.log(result);
2 голосов
/ 09 мая 2019

Вы можете перебрать keys и values заданного object, как это

let items = {
  id: 1,
  name: "name1",
  currency: "usd"
}
Object.keys(items).forEach(function(key, index) {
   console.log("key=>", key, ", index=>", index,", value=>", items[key]);
})
0 голосов
/ 09 мая 2019

Метод Object.keys() возвращает массив имен собственных свойств данного объекта в том же порядке, что и обычный цикл.

const items = {
  id: 1,
  name: 'name1',
  currency: 'usd'
};

console.log(Object.keys(items)); //outputs ['id','name','currency']

Так каквы использовали, Object.keys(items).map(index => index.name);

id.name будет undefined, следовательно, вы получаете undefined

Итак, вы можете использовать

const result = Object.keys(items).map(index => items[index]);

, который будетрезультат в [1, 'name1', 'usd']

0 голосов
/ 09 мая 2019

Нет необходимости в карте. Просто используйте

Object.values(items) for values 

или

Object.keys(items) for keys

let items = {
  id: 1,
  name: "name1",
  currency: "usd"
}
const result = Object.values(items)

console.log(result);
0 голосов
/ 09 мая 2019

Вот действительно код, может быть, он может помочь вам.Object.keys (объект) вернет массив ключей объекта

Object.keys(items) // => ['id', 'name', 'currency']

['id', 'name', 'currency'].map(index =>n. index)//there is no ‘name’ attribute, so it will definitely be undefined
0 голосов
/ 09 мая 2019

Когда вы наносите на карту ключи, вы получаете ключи, а не объект. Кроме того, Object.keys сам возвращает массив ключей, если вам нужны значения, используйте Object.values()

    let items = {
      id: 1,
      name: "name1",
      currency: "usd"
    }
    const result = Object.keys(items);
    const sol = Object.values(items);
    console.log(result, sol);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...