[英]Filter array based on an object's property value relative to how many times it occurs in other elements
[英]How to modify a value in array of object's based on other object
我有一個 object 作為:
let sample = {cat: 10 , dog: 50 , snake: 25};
我有 object 的數組:
let petarray = [
{name: 'newcat' , quantity: 20},
{name: 'oldcat' , quantity: 15},
{name: 'razordog' , quantity: 10}
];
我可以知道如何修改petarray
數量,以便如果petarray[allindexes].name
包含任何sample
,那么quantity = quantity * (respective number of sample )
例如: petarray[0].name
包括cat
,數量應修改為20*(10)
非常感謝任何有關如何實現的幫助,TIA(希望很清楚)
可以這樣做-:
let sample = {cat: 10 , dog: 50 , snake: 25};
const sampleKeys = Object.keys(sample);
petarray = petarray.map(item =>
sampleKeys.find(key => item.name.includes(key))
? { ...item, quantity: item.quantity * sample[match] }
: item;
)
你可以試試這個
let sample = {cat: 10, dog: 50, snake: 25}; let petarray = [{name: 'newcat', quantity: 20},{name: 'oldcat', quantity: 15},{name: 'razordog', quantity: 10}]; let sampleArrayKeys = Object.keys(sample) petarray = petarray.map((p) =>{ const key = sampleArrayKeys.find(sak => p.name.includes(sak)) if (key) { p.quantity *= sample[key] } return p }) console.log(petarray)
let sample = {cat: 10, dog: 50, snake: 25}; let petarray = [{name: 'newcat', quantity: 20},{name: 'oldcat', quantity: 15},{name: 'razordog', quantity: 10}]; petarray.forEach(pet => { for (let sampleKey in sample) { if (sample.hasOwnProperty(sampleKey)) { if (pet.name.includes(sampleKey)) { pet.quantity *= sample[sampleKey]; } } } }, petarray) console.log(petarray)
您可以創建映射,然后只創建map
這個數組:
let sample = {cat: 10, dog: 50, snake: 25}; let petarray = [ {name: 'newcat', quantity: 20}, {name: 'oldcat', quantity: 15}, {name: 'razordog', quantity: 10} ]; const keys = Object.keys(sample); const mapping = petarray.reduce((a, {name})=>{ a[name] = a[name] || {}; let sampleKey = keys.find(k => name.includes(k)); if (sampleKey) a[name] = sampleKey; return a; }, {}) petarray = petarray.map(({name, quantity}) => ({ name, quantity: ((sample[mapping[name]]? (quantity * sample[mapping[name]]): quantity))})); console.log(petarray);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.