遍历对象时出错

时间:2019-05-09 10:31:29

标签: javascript arrays reactjs object ecmascript-6

我有一个对象,假设是项目,并且我试图遍历该对象,并且出现此错误“无法将未定义或null转换为该对象。

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

6 个答案:

答案 0 :(得分:3)

如果要获取密钥,请使用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);

答案 1 :(得分:1)

您可以像这样遍历给定keys的{​​{1}}和values

object

答案 2 :(得分:0)

在键上进行映射时,将获得键而不是对象。另外,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);

答案 3 :(得分:0)

这是真正的代码,也许可以为您提供帮助。 Object.keys(object)将返回对象键的数组

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

['id', 'name', 'currency'].map(index =>n. index)//there is no ‘name’ attribute, so it will definitely be undefined

答案 4 :(得分:0)

没有必要映射。只需使用

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);

答案 5 :(得分:0)

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']