簡體   English   中英

如何根據其他 object 修改對象數組中的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM