如何在JavaScript中访问对象的键、值和条目教程

542 阅读3分钟

你经常需要查看普通JavaScript对象的属性和值。

下面是要从一个对象中提取的常见列表。

  • 一个对象的是属性名称的列表。
  • 一个对象的是属性值的列表。
  • 一个对象的条目是属性名称和相应值的对的列表。

让我们考虑下面这个JavaScript对象。

const hero = {
  name: 'Batman',
  city: 'Gotham'  
};

hero 的键是['name', 'city'] 。值是['Batman', 'Gotham'] 。而条目则是[['name', 'Batman'], ['city', 'Gotham']]

让我们看看有哪些实用的函数为JavaScript提供了从一个对象中提取键、值和条目的功能。

1.Object.key() 返回key

Object.keys(object) 是一个实用函数,用于返回object 的键列表。 让我们用Object.keys() 来获取hero 对象的键。

const hero = {
  name: 'Batman',
  city: 'Gotham'  
};
Object.keys(hero); // => ['name', 'city']

Object.keys(hero) 返回列表['name', 'city'] ,正如预期的那样,这就是 hero对象的键。

1.1 实践中的键:检测对象是否为空

如果你想快速检查一个对象是否为空(没有自己的属性),那么一个好的方法是检查键列表是否为空。

为了检查对象是否为空,你所需要做的就是验证Object.keys(object) 所返回的数组的长度属性。

const isObjectEmpty = Object.keys(object).length === 0;

在下面的例子中,empty 没有属性,而nonEmpty 对象有一个属性。

const empty = {};
const nonEmpty = { a: 1 };
Object.keys(empty).length === 0;    // => true
Object.keys(nonEmpty).length === 0; // => false

Object.keys(empty).length === 0 评估为 true ,这意味着 empty没有属性。

2.2.*Object.values()*返回值

Object.values(object) 是JavaScript的实用函数,用于返回 object的值列表。

让我们用这个函数来获取hero 对象的值。

const hero = {
  name: 'Batman',
  city: 'Gotham'  
};
Object.values(hero); // => ['Batman', 'Gotham']

2.1 实践中的价值:计算属性总和

books 是一个保存一些书的价格的对象。属性的键是书名,而值是书价。

你如何从这个对象中确定所有书籍的总和?通过访问该对象的,并对其进行求和。

让我们看看如何做到这一点。

const books = {
  'The Shining': 5.50,
  'Harry Potter and the Goblet of Fire': 10.00,
  '1984': 4.35
};
const prices = Object.values(books);
prices; // => [4.35, 5.5, 10]
const sum = prices.reduce((sum, price) => sum + price);
sum; // => 19.85

Object.values(books) 返回books对象的值,在这个例子中,它是prices 列表。

然后prices.reduce(Math.sum) ,对价格进行总结。

3.*Object. entries()*返回条目

最后,Object.entries(object) 是一个有用的函数,可以访问object 的条目。

让我们来提取hero 对象的条目。

const hero = {
  name: 'Batman',
  city: 'Gotham'  
};
Object.entries(hero); // => `[['name', 'Batman'], ['city', 'Gotham']]`

3.1 实践中的条目:找到数值为0的属性

再次,让我们使用books 对象,该对象保存了一些书籍的价格。这一次,由于一个错误,其中一本书的价格被分配为0

让我们找到价格为0 的书,并将其名称记录到控制台。

使用对象的条目列表很适合解决这个任务。

const books = {
  'The Shining': 5.50,
  'Harry Potter and the Goblet of Fire': 10.00,
  '1984': 0
};
for (const [book, price] of Object.entries(books)) {
  if (price === 0) {
    console.log(book);
  }
}
// logs '1984'

Object.entries(books) const [book, price] 从这个元组中提取书名和价格。

最后,在for..of 循环里面,你可以检查哪本书的价格是0 ,如果是这样,就把名字记录到控制台。

4.4.总结

键、值和条目是3个常见的列表,可以从JavaScript对象中提取出来进一步处理。

JavaScript提供了必要的实用函数来访问这些列表:

  • 键值由以下函数返回Object.keys(object)
  • 是由Object.values(object)
  • 条目则是由Object.entries(object)

你还知道哪些访问键、值和条目的方法?