Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅保留阵列中每个对象中的选定关键帧_Javascript - Fatal编程技术网

Javascript 仅保留阵列中每个对象中的选定关键帧

Javascript 仅保留阵列中每个对象中的选定关键帧,javascript,Javascript,编辑:不是重复项,因为我的问题不要求删除特定的键,而是删除数组中未找到的所有键 在下图中,函数redux1从数据对象中删除与未在keys\u中列出的键相对应的项,以保持 考虑到我有一个要保存的对象键列表,我如何才能以更干净的方式重写redux1,预先利用map、filter或reduce var数据=[ {姓名:'John',城市:'London',年龄:42}, {姓名:'Mike',城市:'Warsaw',年龄:18}, {姓名:“吉姆”,城市:“纽约”,年龄:22}, {姓名:'Celi

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

在下图中,函数
redux1
数据
对象中删除与未在
keys\u中列出的键相对应的项,以保持

考虑到我有一个要保存的对象键列表,我如何才能以更干净的方式重写
redux1
,预先利用
map
filter
reduce

var数据=[
{姓名:'John',城市:'London',年龄:42},
{姓名:'Mike',城市:'Warsaw',年龄:18},
{姓名:“吉姆”,城市:“纽约”,年龄:22},
{姓名:'Celine',城市:'Tokyo',年龄:54},
]
var keys_to_keep=['name','city']
函数redux1(数据){
data.forEach((个人)=>{
Object.key(person.forEach)((key)=>{
如果(!键到键保留。包括(键)){
删除(个人[钥匙])
}
})
})
console.log(数据)
}
函数redux2(数据){
var reduced=data.filter(person=>Object.keys(person.filter)(key=>keys_to_keep.includes(key)))
console.log(简化)
}
redux1(数据)
//redux2(数据)
var数据=[
{姓名:'John',城市:'London',年龄:42},
{姓名:'Mike',城市:'Warsaw',年龄:18},
{姓名:“吉姆”,城市:“纽约”,年龄:22},
{姓名:'Celine',城市:'Tokyo',年龄:54},
]
var keys_to_keep=['name','city']
data=data.map(element=>Object.assign({}
console.log(数据)
在其中使用和数组.forEach:
var数据=[
{姓名:'John',城市:'London',年龄:42},
{姓名:'Mike',城市:'Warsaw',年龄:18},
{姓名:“吉姆”,城市:“纽约”,年龄:22},
{姓名:'Celine',城市:'Tokyo',年龄:54},
]
var keys_to_keep=['name','city']
const result=data.map(e=>{
常量obj={};
keys to keep.forEach(k=>obj[k]=e[k])
返回obj;
});

控制台日志(结果)您可以使用和的组合:

const数据=[
{姓名:'John',城市:'London',年龄:42},
{姓名:'Mike',城市:'Warsaw',年龄:18},
{姓名:“吉姆”,城市:“纽约”,年龄:22},
{姓名:'Celine',城市:'Tokyo',年龄:54},
]
const keys_to_keep=['name','city'];
const redux=array=>array.map(o=>keys\u to\u keep.reduce((acc,curr)=>{
acc[curr]=o[curr];
返回acc;
}, {}));

console.log(redux(数据))比接受答案略短的版本,使用和:

const数据=[
{姓名:'John',城市:'London',年龄:42},
{姓名:'Mike',城市:'Warsaw',年龄:18},
{姓名:“吉姆”,城市:“纽约”,年龄:22},
{姓名:'Celine',城市:'Tokyo',年龄:54},
]
const keys_to_keep=['name','city'];
const redux1=list=>list.map(o=>Object.fromEntries(
keys_to_keep.map(k=>[k,o[k]]
));

console.log(redux1(数据))您可以使用
对象。条目

函数objfilter(数据、按键至按键){
返回Object.fromEntries(Object.entries(data.filter)(a=>keys\u to\u keep.includes(a[0]))
}
常数数据=[
{姓名:'John',城市:'London',年龄:42},
{姓名:'Mike',城市:'Warsaw',年龄:18},
{姓名:“吉姆”,城市:“纽约”,年龄:22},
{姓名:'Celine',城市:'Tokyo',年龄:54},
]
const keys_to_keep=['name','city'];
日志(objfilter(数据、键到键))

可能重复“…以更干净的方式”-您的功能有哪些地方不“干净”?“…优先使用映射、过滤或还原?”-为什么是这三个?@异端猴子,不是复制品。我知道这个答案,但它只包括删除特定的键,而不是删除数组中未找到的所有键。那么您应该在问题中提到这一点。这是我见过的最优雅的实现之一+10
data.reduce((r, c) => [ ...r, Object.entries(c).reduce((b, [k, v]) => keys_to_keep.includes(k) ? {...b, [k]: v } : b, {}) ],[])