【发布时间】:2019-02-27 14:20:14
【问题描述】:
编辑:不是重复的,因为我的问题不要求删除特定键,而是在数组中找不到所有键。
在下面,函数redux1 从data 对象中删除与keys_to_keep 中未列出的键对应的条目。
鉴于我有一个要保留的对象键列表,我如何以更简洁的方式重写redux1,最好是使用map、filter 或reduce?
var data = [
{name: 'John', city: 'London', age: 42},
{name: 'Mike', city: 'Warsaw', age: 18},
{name: 'Jim', city: 'New York', age: 22},
{name: 'Celine', city: 'Tokyo', age: 54},
]
var keys_to_keep = ['name', 'city']
function redux1(data) {
data.forEach((person) => {
Object.keys(person).forEach((key) => {
if (!keys_to_keep.includes(key)) {
delete (person[key])
}
})
})
console.log(data)
}
function redux2(data) {
var reduced = data.filter(person => Object.keys(person).filter(key => keys_to_keep.includes(key)))
console.log(reduced)
}
redux1(data)
//redux2(data)
我当前的redux2 将返回对象不会删除age。
【问题讨论】:
-
"...以更简洁的方式" - 你的功能有什么不“干净”的地方? “...最好使用 map、filter 或 reduce?” - 为什么是这三个?
-
@Heretic Monkey,不是重复的。我知道这个答案,但它只涉及删除特定键,而不是数组中未找到的所有键。
-
那么你应该在你的问题中提到这一点。 stackoverflow.com/help/duplicates
标签: javascript