我有2个具有相似值的数组。我想要的是获取数组和对象的交集-
第一个对象的console.log
是-
{
"1221":{
"oldPrice":{
"amount":75
},
"basePrice":{
"amount":75
},
"finalPrice":{
"amount":75
},
"tierPrices":[
]
},
"1222":{
"oldPrice":{
"amount":75
},
"basePrice":{
"amount":75
},
"finalPrice":{
"amount":75
},
"tierPrices":[
]
},
"1223":{
"oldPrice":{
"amount":75
},
"basePrice":{
"amount":75
},
"finalPrice":{
"amount":75
},
"tierPrices":[
]
},
"1224":{
"oldPrice":{
"amount":80
},
"basePrice":{
"amount":80
},
"finalPrice":{
"amount":80
},
"tierPrices":[
]
}
}
第二个数组的console.log
是-
[["1222","1223","1224"]]
所以基本上,我想获得第一个对象的id等于第二个数组,即1222、1223和1224。
我尝试使用inArray
,但是它不起作用。
答案 0 :(得分:1)
您可以使用Array.reduce和Object.assign
let obj = {"1221":{"oldPrice":{"amount":75},"basePrice":{"amount":75},"finalPrice":{"amount":75},"tierPrices":[]},"1222":{"oldPrice":{"amount":75},"basePrice":{"amount":75},"finalPrice":{"amount":75},"tierPrices":[]},"1223":{"oldPrice":{"amount":75},"basePrice":{"amount":75},"finalPrice":{"amount":75},"tierPrices":[]},"1224":{"oldPrice":{"amount":80},"basePrice":{"amount":80},"finalPrice":{"amount":80},"tierPrices":[]}};
let arr = [["1222","1223","1224"]];
let result = arr[0].reduce((a,c) => Object.assign(a, {[c] : obj[c]}), {});
console.log(result);
注意:如果array
中缺少object
中的条目,则可以将代码更新为以下内容
let obj = {"1221":{"oldPrice":{"amount":75},"basePrice":{"amount":75},"finalPrice":{"amount":75},"tierPrices":[]},"1222":{"oldPrice":{"amount":75},"basePrice":{"amount":75},"finalPrice":{"amount":75},"tierPrices":[]},"1223":{"oldPrice":{"amount":75},"basePrice":{"amount":75},"finalPrice":{"amount":75},"tierPrices":[]},"1224":{"oldPrice":{"amount":80},"basePrice":{"amount":80},"finalPrice":{"amount":80},"tierPrices":[]}};
let arr = [["missing_entry_from_obj", "1222","1223","1224"]];
let result = arr[0].reduce((a,c) => {if(obj[c]) a[c]= obj[c]; return a;}, {});
console.log(result);
答案 1 :(得分:0)
您可以使用数组映射来工作:
var a1 = {
"1221":{
"oldPrice":{
"amount":75
},
"basePrice":{
"amount":75
},
"finalPrice":{
"amount":75
},
"tierPrices":[
]
},
"1222":{
"oldPrice":{
"amount":75
},
"basePrice":{
"amount":75
},
"finalPrice":{
"amount":75
},
"tierPrices":[
]
},
"1223":{
"oldPrice":{
"amount":75
},
"basePrice":{
"amount":75
},
"finalPrice":{
"amount":75
},
"tierPrices":[
]
},
"1224":{
"oldPrice":{
"amount":80
},
"basePrice":{
"amount":80
},
"finalPrice":{
"amount":80
},
"tierPrices":[
]
}
};
var a2 = [["1222","1223","1224"]];
var result = {};
a2[0].map(current=>{
var temp = a1[current];
result[current] = temp;
});
console.log(result);
答案 2 :(得分:0)
您可以映射现有对象或false(如果找不到)。然后创建零件的新对象。
var object = { 1221: { oldPrice: { amount: 75 }, basePrice: { amount: 75 }, finalPrice: { amount: 75 }, tierPrices: [] }, 1222: { oldPrice: { amount: 75 }, basePrice: { amount: 75 }, finalPrice: { amount: 75 }, tierPrices: [] }, 1223: { oldPrice: { amount: 75 }, basePrice: { amount: 75 }, finalPrice: { amount: 75 }, tierPrices: [] }, 1224: { oldPrice: { amount: 80 }, basePrice: { amount: 80 }, finalPrice: { amount: 80 }, tierPrices: [] } },
keys = ["1222", "1223", "1224"],
result = Object.assign(...keys.map(k => k in object && { [k]: object[k] }));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }