我正在尝试避免诸如loaddash(_.filter)之类的依赖性,并使用纯JavaScript。
基本上我有一个对象对象,我需要遍历并过滤掉所有不具有特定值的parent_id的对象。
var filterBy = 50
var obj = {
256: {
name: john
parent_id: 50
},
341: {
name: dwit
parent_id: 50
},
398: {
name: ryan
parent_id: 30
},
421: {
name: jack
parent_id: 50
}
}
结果为
var filteredOBJ = {
256: {
name: john
parent_id: 50
},
343: {
name: dwit
parent_id: 50
},
421: {
name: jack
parent_id: 50
}
}
答案 0 :(得分:2)
const result = {};
for(const [key, val] of Object.entries(obj)) {
if(val.parent_id === filterBy) {
result[key] = val;
}
}
只需将您描述的内容转换为代码即可。
答案 1 :(得分:1)
这是ES6中一个简单过滤器的实现:
let myObj = {
256: {
name: "john",
parent_id: 50
},
341: {
name: "dwit",
parent_id: 50
},
398: {
name: "ryan",
parent_id: 30
},
421: {
name: "jack",
parent_id: 50
}
}
let result = {};
Object.entries(myObj).forEach( ([key, value]) => {
if(key != 398) // condition over keys
result[key] = value;
})
console.log(result);
答案 2 :(得分:1)
如果您喜欢loadash方法,但想使用javascript,则.ghc/ghci_history
上的reduce()
将为您提供不错的功能方法,尽管上述Object.entries()
解决方案可能会为您带来可读性。 / p>
forEach