【发布时间】:2020-06-16 12:20:18
【问题描述】:
您能否帮助实现以下输出比较 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
您能否帮助实现以下输出比较 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
const var3 = var2.reduce((acc, cur) => {
if (var1[cur]) {
acc[cur] = var1[cur];
}
return acc;
}, {})
【讨论】:
if 将解决这个问题。见编辑
使用.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)
【讨论】:
你可以使用 Object.entries 和迭代
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)
【讨论】:
您可以将.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);
【讨论】: