JavaScript的对象不像数组或字符串那样可以迭代,所以我们不能直接在对象上使用 filter() 方法。

常用的对象处理方法:

  • 使用 Object.keys() 来提取键
  • 使用 Object.values() 来提取值
  • 使用 Object. entries() 检索键和值

在这篇文章中,我们将探讨如何使用Object.keys()来过滤一个对象。

  1. Object.key() 方法用于生成一个数组,其元素是包含对象属性的名称(key)的字符串。
  2. 在生成了键名数组之后,可以使用 filter() 遍历现有的数组,只返回那些符合指定条件的键名。
  3. 最后,使用 reduce() 将过滤后的键和它们的值收集到一个新的对象中。

假设我们有一个对象并且我们想只返回键值中带有name的键值对:

const user = {
    firstName: "John",
    lastName: "Doe",
    userName: "johndoe12",
    email: "[email protected]tackabuse.com",
    age: 37,
    hobby: "Singing"
  1. 使用Object.key(user)来生成所有的键,作为一个数组,结果是一个数组:
Object.keys(user)
// ["firstName","lastName","userName","email","age","hobby"]
  1. 使用filter()方法,筛出包含Name的键名
Object.keys(user).filter((key) => key.includes("Name"))
// ["firstName","lastName","userName"]
  1. 使用reduce()将符合条件的键值对合并为一个对象
const names = Object.keys(user).filter((key) => key.includes("Name"))
    .reduce((obj, key) => { return Object.assign(obj, {[key]: user[key]}) }, {})
console.log(names)
// { firstName: 'John', lastName: 'Doe', userName: 'johndoe12' }

通过键过滤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": "电台",