JS过滤对象中的属性

一、过滤空值属性

在处理对象时,可能会出现属性值为空的情况,这些属性在实际应用中可能没有太大的意义,甚至可能导致一些错误。因此,过滤空值属性是很有必要的。


const obj1 = { name: 'Lucy', age: null, sex: 'female' };
const obj2 = { height: undefined, weight: 50, age: 20 };

// 用Object.keys 和 reduce 方法过滤空值属性
const filterEmptyProps = obj => {
  return Object.keys(obj).reduce((acc, key) => {
    if (obj[key] !== null && obj[key] !== undefined) {
      acc[key] = obj[key];
    }
    return acc;
  }, {});
}

console.log(filterEmptyProps(obj1)); // { name: 'Lucy', sex: 'female' }
console.log(filterEmptyProps(obj2)); // { weight: 50, age: 20 }

上述代码中, filterEmptyProps() 方法定义了一个 reduce() 函数,遍历对象的每一个属性,如果属性值不为空,则添加该属性到新对象中。最终返回一个过滤后的新对象。

二、过滤不需要的属性

有时候,我们需要从一个对象中过滤掉一些不需要的属性,这可以通过 delete 关键字实现。


const obj = { id: 1, name: 'Lucy', age: 20 };

// 过滤掉 id 属性
delete obj.id;

console.log(obj); // { name: 'Lucy', age: 20 }

上述代码中的 delete 关键字可以删除对象中的某一个属性。实现过滤不需要的属性的效果。

三、过滤数组对象的属性

当我们需要处理一个数组对象时,可以使用 Array.prototype.map() 方法过滤掉不需要的属性。


const users = [
  { name: 'Lucy', age: 20 },
  { name: 'Tom', age: 25 },
  { name: 'Jone', age: 30 }
];

// 过滤掉 age 属性
const filteredUsers = users.map(({ name }) => ({ name }));

console.log(filteredUsers);
// [{ name: 'Lucy' }, { name: 'Tom' }, { name: 'Jone' }]

上述代码中, Array.prototype.map() 方法将一个数组对象中的每一个元素转化为一个新的数组对象,新的数组对象只包含需要的属性。这里使用了对象解构,方便的获取到每个元素的属性。

四、过滤数组中选中的对象

有时候我们需要从一个数组中选出一个符合条件的对象,可以使用 Array.prototype.filter() 方法过滤。


const users = [
  { name: 'Lucy', age: 20 },
  { name: 'Tom', age: 25 },
  { name: 'Jone', age: 30 }
];

// 过滤出 age 大于 23 的元素
const filteredUsers = users.filter(({ age }) => age > 23);

console.log(filteredUsers);
// [{ name: 'Tom', age: 25 }, { name: 'Jone', age: 30 }]

上述代码中,使用 Array.prototype.filter() 方法过滤出 age 大于 23 的元素。

五、过滤数组对象

有时候我们需要过滤整个数组对象,而不是其中的一个属性或选中的对象。可以使用 Array.prototype.map() 方法和对象解构来实现这一效果。


const users = [
  { name: 'Lucy', age: 20 },
  { name: 'Tom', age: 25 },
  { name: 'Jone', age: 30 }
];

// 只保留 name 属性
const filteredUsers = users.map(({ name }) => ({ name }));

console.log(filteredUsers);
// [{ name: 'Lucy' }, { name: 'Tom' }, { name: 'Jone' }]

上述代码中,使用 Array.prototype.map() 方法和对象解构把每一个元素转化为新的数组对象,数组对象只保留了 name 属性。

六、过滤数组中重复的对象

处理数组对象时,有时需要过滤掉重复的元素。可以使用 Set 和 Array.prototype.filter() 方法来实现。


const users = [
  { name: 'Lucy', age: 20 },
  { name: 'Lucy', age: 25 },
  { name: 'Tom', age: 25 },
  { name: 'Jone', age: 30 }
];

// 过滤重复元素
const filteredUsers = users.filter((user, index, array) => {
  const firstIndex = array.findIndex(item => item.name === user.name);
  return firstIndex === index;
})

console.log(filteredUsers);
// [{ name: 'Lucy', age: 20 }, { name: 'Tom', age: 25 }, { name: 'Jone', age: 30 }]

上述代码中,使用 Array.prototype.filter() 方法和 Array.prototype.findIndex() 方法来过滤掉重复元素。

七、使用 filter() 过滤对象

JS中有一个 Array.prototype.filter() 方法,可以用于数组的过滤,通过一些小技巧,我们也可以使用它来对对象进行过滤。如下所示:


const obj = { name: 'Lucy', age: 20, sex: 'female' };

// 过滤年龄小于 25 的属性
const filteredObj = Object.fromEntries(
  Object.entries(obj).filter(([key, value]) => key !== 'age' || value >= 25)
);

console.log(filteredObj);
// { name: 'Lucy', age: 25, sex: 'female' }

上述代码中,使用 Object.entries() 方法将对象转化为一个键值对数组,然后使用 Array.prototype.filter() 方法筛选出需要的属性并返回一个新的数组,最后使用 Object.fromEntries() 方法将筛选后的数组转化为一个新的对象。

八、使用 Object.keys() 和 reduce() 过滤空属性

我们可以使用 Object.keys() 和 reduce() 方法来过滤对象空属性,如下所示:


const obj = { name: 'Lucy', age: null, sex: 'female' };

// 过滤空属性
const filteredObj = Object.keys(obj).reduce((acc, key) => {
  if (obj[key] !== undefined && obj[key] !== null) {
    acc[key] = obj[key];
  }
  return acc;
}, {});

console.log(filteredObj);
// { name: 'Lucy', sex: 'female' }

上述代码中,使用 Object.keys() 方法返回对象的属性名,再使用 reduce() 方法遍历对象,如果属性值不为空,则添加该属性到新对象中,最终返回包含非空属性的新对象。

九、使用 Object.keys() 和 reduce() 过滤符合条件的字段

我们可以使用 Object.keys() 和 reduce() 方法来过滤符合条件的字段,如下所示:


const obj = { name: 'Lucy', age: 20, sex: 'female' };

// 过滤属性名为 name 和 sex 的属性
const filteredObj = Object.keys(obj).reduce((acc, key) => {
  if (['name', 'sex'].includes(key)) {
    acc[key] = obj[key];
  }
  return acc;
}, {});

console.log(filteredObj);
// { name: 'Lucy', sex: 'female' }

上述代码中,使用 Object.keys() 方法返回对象的属性名,再使用 reduce() 方法遍历对象,筛选出满足条件的属性名,最终返回包含满足条件的属性的新对象。

十、使用 Array.prototype.filter() 过滤数组中的某个属性

我们可以使用 Array.prototype.filter() 过滤数组中的某个属性,如下所示:


const users = [
  { name: 'Lucy', age: 20 },
  { name: 'Tom', age: 25 },
  { name: 'Jone', age: 30 }
];

// 只保留 name 和 age 属性
const filteredUsers = users.filter(user => {
  const { name, age } = user;
  return { name, age }
});

console.log(filteredUsers);
// [{ name: 'Lucy', age: 20 }, { name: 'Tom', age: 25 }, { name: 'Jone', age: 30 }]

上述代码中,使用 Array.prototype.filter() 方法筛选出符合条件的元素,并返回一个包含需要的属性的新数组。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/247237.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 13:19
下一篇 2024-12-12 13:19

相关推荐

  • JS Proxy(array)用法介绍

    JS Proxy(array)可以说是ES6中非常重要的一个特性,它可以代理一个数组,监听数据变化并进行拦截、处理。在实际开发中,使用Proxy(array)可以方便地实现数据的监…

    编程 2025-04-29
  • Vant ContactList 增加属性的实现方法

    在使用前端UI框架Vant中的ContactList组件时,我们有时需要为此组件增加一些个性化的属性,来满足我们特定的需求。那么,如何实现ContactList组件的增加属性功能呢…

    编程 2025-04-29
  • 全面解读数据属性r/w

    数据属性r/w是指数据属性的可读/可写性,它在程序设计中扮演着非常重要的角色。下面我们从多个方面对数据属性r/w进行详细的阐述。 一、r/w的概念 数据属性r/w即指数据属性的可读…

    编程 2025-04-29
  • 解析js base64并转成unit

    本文将从多个方面详细介绍js中如何解析base64编码并转成unit格式。 一、base64编码解析 在JavaScript中解析base64编码可以使用atob()函数,它会将b…

    编程 2025-04-29
  • Node.js使用Body-Parser处理HTTP POST请求时,特殊字符无法返回的解决方法

    本文将解决Node.js使用Body-Parser处理HTTP POST请求时,特殊字符无法返回的问题。同时,给出一些相关示例代码,以帮助读者更好的理解并处理这个问题。 一、问题解…

    编程 2025-04-29
  • t3.js:一个全能的JavaScript动态文本替换工具

    t3.js是一个非常流行的JavaScript动态文本替换工具,它是一个轻量级库,能够很容易地实现文本内容的递增、递减、替换、切换以及其他各种操作。在本文中,我们将从多个方面探讨t…

    编程 2025-04-28
  • 使用PHP foreach遍历有相同属性的值

    本篇文章将介绍如何使用PHP foreach遍历具有相同属性的值,并给出相应的代码示例。 一、基础概念 在讲解如何使用PHP foreach遍历有相同属性的值之前,我们需要先了解几…

    编程 2025-04-28
  • JS图片沿着SVG路径移动实现方法

    本文将为大家详细介绍如何使用JS实现图片沿着SVG路径移动的效果,包括路径制作、路径效果、以及实现代码等内容。 一、路径制作 路径的制作,我们需要使用到SVG,SVG是可缩放矢量图…

    编程 2025-04-27
  • PowerDesigner批量修改属性

    本文将教您如何使用PowerDesigner批量修改实体、关系等对象属性。 一、选择要修改的对象 首先需要打开PowerDesigner,并选择要修改属性的对象。可以通过以下两种方…

    编程 2025-04-27
  • 如何使用JS调用Python脚本

    本文将详细介绍通过JS调用Python脚本的方法,包括使用Node.js、Python shell、child_process等三种方法,以及在Web应用中的应用。 一、使用Nod…

    编程 2025-04-27

发表回复

登录后才能评论