按键数组筛选javascript映射对象

按键数组筛选javascript映射对象,javascript,arrays,dictionary,filter,Javascript,Arrays,Dictionary,Filter,我有一组钥匙: var arr = ['var1', 'var2', 'var3'] 我还有一个Javascript映射对象,其中包含四个键(var1、var2、var3、var4)和值(1、2、3、4),我希望通过arr数组对它们进行过滤,因此我得到一个新的映射对象,它只包含键(var1、var2、var3)和值(1、2、3)。有人知道我怎么做吗?您可以使用reduce()填充一个新对象: 可以使用reduce()填充新对象: 要删除一个对象的属性,必须使用delete运算符 var-ar

我有一组钥匙:

var arr = ['var1', 'var2', 'var3']

我还有一个Javascript映射对象,其中包含四个键(var1、var2、var3、var4)和值(1、2、3、4),我希望通过arr数组对它们进行过滤,因此我得到一个新的映射对象,它只包含键(var1、var2、var3)和值(1、2、3)。有人知道我怎么做吗?

您可以使用reduce()填充一个新对象:


可以使用reduce()填充新对象:


要删除一个对象的属性,必须使用
delete
运算符

var-arr=['var1','var2','var3']
var obj={var1:1,var2:2,var3:3,var4:4};
var newObj=Object.assign({},obj);
Object.key(newObj).forEach(函数(key){
如果(!arr.includes(键))
删除newObj[key];
});

console.log(newObj)您必须使用
删除
运算符才能删除一个对象的属性

var-arr=['var1','var2','var3']
var obj={var1:1,var2:2,var3:3,var4:4};
var newObj=Object.assign({},obj);
Object.key(newObj).forEach(函数(key){
如果(!arr.includes(键))
删除newObj[key];
});

console.log(newObj)如果我没有弄错,您有以下情况:

const keysToKeep = ["var1", "var2", "var3"];
const object = {
  "var1": 1,
  "var2": 2,
  "var3": 3
};
如果是这种情况,则可以执行以下操作:

const filtered = Object.entries(object)
.filter(e => keysToKeep.includes(e[0]))
.reduce((acc, entrt)=>{
  acc[entry[0]] = entry[1];
  return acc;
}, {});


这将基本上获取对象中包含的每个条目,只保留具有先前定义的键数组中的键的条目,然后将其还原为对象

如果我没有弄错的话,您有以下情况:

const keysToKeep = ["var1", "var2", "var3"];
const object = {
  "var1": 1,
  "var2": 2,
  "var3": 3
};
如果是这种情况,则可以执行以下操作:

const filtered = Object.entries(object)
.filter(e => keysToKeep.includes(e[0]))
.reduce((acc, entrt)=>{
  acc[entry[0]] = entry[1];
  return acc;
}, {});


这将基本上获取对象中包含的每个条目,只保留具有先前定义的键数组中的键的条目,然后将其还原为对象

你能给我们展示一下你想要组合的数组或对象,以及你想要它如何结束的例子吗?我已经尝试了map/filter/reduce,但我没有任何一个可以使用@ScottSauyetSo展示你的尝试;这样我们就可以解释有缺陷的假设以及这些方法不起作用的原因,然后提供有效的解决方案。通过这种方式,你可以学到一些有用的东西,而不仅仅是给你一个黑箱解决方案。我投票将这个问题作为离题题来结束,因为它显示出很少的研究成果。@danielo,它正在为您运行我的解决方案?您能否向我们展示您想要组合的数组或对象以及您希望它如何结束的示例?我已经尝试了map/filter/reduce,但我没有任何一个可以运行@ScottSauyetSo展示您的尝试;这样我们就可以解释有缺陷的假设以及这些方法不起作用的原因,然后提供有效的解决方案。通过这种方式,你可以学到一些有用的东西,而不仅仅是得到一个黑箱解决方案。我投票将这个问题作为离题题来结束,因为它显示出很少的研究工作。@danielo,它正在为你解决我的问题?