你经常需要查看普通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)
你还知道哪些访问键、值和条目的方法?