JavaScript的对象不像数组或字符串那样可以迭代,所以我们不能直接在对象上使用
filter()
方法。
常用的对象处理方法:
-
使用
Object.keys()
来提取键
-
使用
Object.values()
来提取值
-
使用
Object. entries()
检索键和值
在这篇文章中,我们将探讨如何使用Object.keys()来过滤一个对象。
-
Object.key()
方法用于生成一个数组,其元素是包含对象属性的名称(key)的字符串。
-
在生成了键名数组之后,可以使用
filter()
遍历现有的数组,只返回那些符合指定条件的键名。
-
最后,使用
reduce()
将过滤后的键和它们的值收集到一个新的对象中。
假设我们有一个对象并且我们想只返回键值中带有name的键值对:
const user = {
firstName: "John",
lastName: "Doe",
userName: "johndoe12",
email: "[email protected]tackabuse.com",
age: 37,
hobby: "Singing"
- 使用Object.key(user)来生成所有的键,作为一个数组,结果是一个数组:
Object.keys(user)
- 使用
filter()
方法,筛出包含Name
的键名
Object.keys(user).filter((key) => key.includes("Name"))
- 使用
reduce()
将符合条件的键值对合并为一个对象
const names = Object.keys(user).filter((key) => key.includes("Name"))
.reduce((obj, key) => { return Object.assign(obj, {[key]: user[key]}) }, {})
console.log(names)
通过键过滤Users对象,只返回selectedUsers的对象
const users = {
John: { username: 'johncam112', age:19 },
Daniel: { key: 'Dandandel1', age:21 },
Ruth: { key: 'rutie01', age:24 },
Joe: { key: 'Joemathuel', age:28 }
const selectedUsers = ['Ruth', 'Daniel'];
const filteredUsers = Object.keys(users)
.filter(key => selectedUsers.includes(key))
.reduce((obj, key) => {
obj[key] = users[key];
return obj;
}, {});
console.log(filteredUsers);
Daniel: {
key:"Dandandel1",
age:21
Ruth: {
key:"rutie01",
age:24
console.log(Object.keys(arr)); // console: ['0', '1', '2']
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.keys(obj)); // console: ['0', '1', ..
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意:filter() 不会对空数组进行检测。
注意:filter() 不会改变原始数组。
filter的作用:过滤数组中符合条件的元素
过滤掉 空元素、null、undefined
var arr = [1, 2, , 3, , -3, null, , 0,...
对象数组格式如下,其中“温度”、“湿度”、“烟感”是必须的,提供的API接口也是固定存在的,其他字段根据设备的不同,会不出现或者出现多个其他数据字段。但是前端需要将“温度”、“湿度”、“烟感”三个数据指标通过JQ的DOM渲染都指定ID。
var res = {
"err": "",
"res": "",
"data": [
"name": "电台",