用Javascript比较对象的键和数组,并返回新对象。

问题描述 投票:0回答:1

请你帮助实现下面的输出比较var1和var2,并获得基于var2的输出,其中关键是在字符串的数组提供的

var1 = {a:1, b:2, c:3, d:4};
var2 = ['a', 'd'];

输出应该是。

var3 = {a:1, d:4};
javascript arrays json oop es6-class
1个回答
3
投票
const var3 = var2.reduce((acc, cur) => {
  if (var1[cur]) {
    acc[cur] = var1[cur];
  }
  return acc;
}, {})

https:/jsfiddle.netchp510nj。


0
投票

使用 .forEach

var var1 = {a:1,b:2,c:3,d:4}; var var2 =['a','d'];
var var3 = {};

var2.forEach(i=>{
 var3[i] = var1[i]
})


console.log(var3)

0
投票

你可以使用Object.entry和迭代。

var1 = {a:1,b:2,c:3,d:4}; var2 =['a','d'];
o={}
for(let [k,v] of Object.entries(var1)){
  var2.forEach(x=>{if(k==x){
        o[k]=v
  }})
}
console.log(o)

0
投票

您可以 .map() 各键 var2 到一个包含键和其相关值的对象。从这个映射的数组中,您可以将每个对象分配给一个对象,使用 Object.assign():

const var1 = {a:1,b:2,c:3,d:4};
const var2 = ['a','d', 'f'];

const var3 = Object.assign({}, ...var2.map(id => id in var1 ? {[id]: var1[id]} : {}));
console.log(var3);

另一种办法是使用 Object.fromEntries() 如果你能支持它。

const var1 = {a:1,b:2,c:3,d:4};
const var2 = ['a','d', 'f'];

const var3 = Object.fromEntries(var2.filter(id => id in var1).map(id => [id, var1[id]]));
console.log(var3);
© www.soinside.com 2019 - 2024. All rights reserved.