在前端开发中,我们经常需要对数组或对象进行筛选,以得到我们想要的数据。ES6 中提供了一些方便的 Array 方法,如 filter
和 find
,但这些方法在处理复杂的对象时,可能需要写一些繁琐的代码。而 ES8 中则新增了 Object 的新方法:Object.entries
和 Object.fromEntries
,能够更方便、简洁地实现对象的筛选、过滤。
Object.entries
Object.entries
方法可以将对象转换为一个由其属性名和属性值对组成的数组。这个方法返回的数组中,每个元素都是一个包含两个值的数组,第一个值是对象属性名,第二个值是属性值。
下面是一个示例代码:
const person = { name: '张三', age: 20, sex: '男' }; const entries = Object.entries(person); console.log(entries); // 输出:[['name', '张三'], ['age', 20], ['sex', '男']]
通过将对象转换成这样的键值对数组,我们可以用 filter
和 map
方法轻松实现对象的筛选、过滤:
const persons = [ { name: '张三', age: 20, sex: '男' }, { name: '李四', age: 22, sex: '女' }, { name: '王五', age: 25, sex: '男' } ]; const malePersons = persons.filter(([name, value]) => value.sex === '男').map(([name, value]) => value); console.log(malePersons); // 输出:[{ name: '张三', age: 20, sex: '男' }, { name: '王五', age: 25, sex: '男' }]
在上面的代码中,我们首先使用 filter
方法筛选了性别为男的对象,然后使用 map
方法将其转换为只包含对象值的数组。在 filter
方法中,我们使用了 ES6 的解构赋值语法,把属性名和属性值分别解构出来,以方便使用。
Object.fromEntries
Object.fromEntries
方法则是 Object.entries
的逆方法,可以将由属性名和属性值对组成的数组转换为一个对象。这个方法接收一个由键值对数组构成的数组,每个键值对数组应该包含两个元素,第一个元素是属性名,第二个元素是属性值。
下面是一个示例代码:
const entries = [['name', '张三'], ['age', 20], ['sex', '男']]; const person = Object.fromEntries(entries); console.log(person); // 输出:{ name: '张三', age: 20, sex: '男' }
使用 Object.entries
和 Object.fromEntries
可以更方便地进行对象的筛选和过滤,同时也可以减少一些繁琐的代码。在实际开发中,可以根据实际需求灵活运用这两个方法,提高开发效率。
总结
本文介绍了 ES8 中新增的 Object 方法 Object.entries
和 Object.fromEntries
,并通过示例代码演示了如何使用这两个方法实现对象的筛选和过滤。这两个方法在处理复杂的对象时尤其有用,可以帮助开发者更快、更方便地获取所需数据。
希望本文对你有所帮助,如果你有任何疑问或建议,欢迎在评论区留言,让我们一起学习前端技术!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64574042968c7c53b0a0809e