在ES6中以这种方式过滤对象的最佳方法是什么?
起始数据:
const acceptedValues = ["value1","value3"]
const myObject = {
prop1:"value1",
prop2:"value2",
prop3:"value3"
}
预期产出:
filteredObject = {
prop1:"value1",
prop3:"value3"
}
在ES6中以这种方式过滤对象的最佳方法是什么?
起始数据:
const acceptedValues = ["value1","value3"]
const myObject = {
prop1:"value1",
prop2:"value2",
prop3:"value3"
}
预期产出:
filteredObject = {
prop1:"value1",
prop3:"value3"
}
8条答案
按热度按时间toiithl61#
可以使用
reduce()
创建新对象,使用includes()
检查数组中是否存在对象的值。uklbhaso2#
对于ES6,如果
那么你可以使用以下的重构技术:
您将拥有:
wydwbb8l3#
为了在@Nenad Vracar的基础上构建一个好答案,您可以使用一个对象来代替带有
includes
的Array,以加快查找速度:也不是说
includes
不能完成这项工作,但我想提供一个替代视图。x7yiwoj44#
为什么不使用简单的for循环呢?
b09cbbtk5#
由于我还没有看到使用
Object.entries
的答案,这里有一个。注意,由于Object.entries()
的实现明显比Object.keys()
慢,这也将比公认的答案慢,但有些人可能更喜欢这种可读性或可扩展性(更容易通过不同的过滤函数)。或者用一句比较长的俏皮话来说:
lpwwtiir6#
使用一个简单的for循环并按键获取对象。
kx7yvsdv7#
IMO,“最好的方法”是Lodash方法
https://lodash.com/docs/4.17.10#pick
hof1towb8#