编辑:不是重复的,因为我的问题不要求删除特定键,而是在数组中找不到所有键。

在下面,函数 redux1keys_to_keep 对象中删除与 data 中未列出的键对应的条目。

鉴于我有一个要保留的对象键列表,我如何以更简洁的方式重写 redux1 ,最好使用 mapfilterreduce

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

最佳答案

您可以组合使用 Array#map Array#reduce :

const 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},
]

const keys_to_keep = ['name', 'city'];

const redux = array => array.map(o => keys_to_keep.reduce((acc, curr) => {
  acc[curr] = o[curr];
  return acc;
}, {}));

console.log(redux(data));

关于javascript - 仅保留数组中每个对象中的选定键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54907549/

10-11 22:23
查看更多