簡體   English   中英

如何在對象數組中添加附加的 object 屬性?

[英]How to add aditional object property in array of objects?

我正在嘗試在現有 object 中動態添加其他屬性。這就是我所擁有的:

let items = [
   {name: 'Carlsberg', category: 'Beer', price: '4.99'},
   {name: 'Smirnoff', category: 'Vodka', price: '28.99'},
   {name: 'Miller Lite', category: 'Beer', price: '7.99'}
]

這些是我想添加的 object 屬性:

categories:{
     beerCounter:2,
     vodkaCounter:1,
}

我想要的是動態添加 object 的附加屬性,如下所示:

items = [
       {name: 'Carlsberg', category: 'Beer', price: '4.99', counter: categories.beerCounter},
       {name: 'Smirnoff', category: 'Vodka', price: '28.99', counter: categories.vodkaCounter},
       {name: 'Miller Lite', category: 'Beer', price: '7.99', counter: categories.beerCounter}
    ]

使用Array.forEach

let items = [
   {name: 'Carlsberg', category: 'Beer', price: '4.99'},
   {name: 'Smirnoff', category: 'Vodka', price: '28.99'},
   {name: 'Miller Lite', category: 'Beer', price: '7.99'}
];

const categories = {
     beerCounter: 2,
     vodkaCounter: 1,
};

items.forEach(item => {
  item.counter = item.category === 'Beer' ? categories.beerCounter : categories.vodkaCounter;
})

console.table(items);

您可以使用forEach迭代您的數組,使用每個項目的小寫category值設置counter屬性:

 let items = [{ name: 'Carlsberg', category: 'Beer', price: '4.99' }, { name: 'Smirnoff', category: 'Vodka', price: '28.99' }, { name: 'Miller Lite', category: 'Beer', price: '7.99' } ] let categories = { beerCounter: 2, vodkaCounter: 1, } items.forEach(i => i.counter = categories[`${i.category.toLowerCase()}Counter`]) console.log(items)

您可以使用Array.forEach()方法執行此操作。

我建議您使用正則表達式來執行此操作,如果您的類別全部小寫或全部大寫,甚至是兩者的混合,它可以避免鍵盤錯誤,有時我們的手指會在輸入代碼時徘徊哈哈

 let items = [ {name: 'Carlsberg', category: 'Beer', price: '4.99'}, {name: 'Smirnoff', category: 'Vodka', price: '28.99'}, {name: 'Miller Lite', category: 'Beer', price: '7.99'} ] const categories = { beerCounter: 2, vodkaCounter: 1, }; items.forEach(item => { if (/^beer/i.test(item.category)) { item.counter = categories.beerCounter; } if (/^vodka/i.test(item?.category)) { item.counter = categories.vodkaCounter; } }); console.log(items);

祝你好運!

let items = [
   {name: 'Carlsberg', category: 'Beer', price: '4.99'},
   {name: 'Smirnoff', category: 'Vodka', price: '28.99'},
   {name: 'Miller Lite', category: 'Beer', price: '7.99'}
]

items.forEach((item) => {
  if(item.category === 'Beer'){
  item.categories = categories.beerCounter
}
})

您可以使用mapforEach

let items = [
   {name: 'Carlsberg', category: 'Beer', price: '4.99'},
   {name: 'Smirnoff', category: 'Vodka', price: '28.99'},
   {name: 'Miller Lite', category: 'Beer', price: '7.99'}
]

const categories = {
    beerCounter:2,
    vodkaCounter:1,
}

items.forEach(item=>{
  if(item.category === 'Beer')
    item.counter = categories.beerCounter;
  if(item.category === 'Vodka')
    item.counter = categories.vodkaCounter;
})

console.log(items);

你可以像這樣 map 它。 基本上這個想法是遍歷所有項目,然后使用每個項目的類別 map 到categories object 中的一個鍵來獲取每個項目的計數器值。

 let items = [ {name: 'Carlsberg', category: 'Beer', price: '4.99'}, {name: 'Smirnoff', category: 'Vodka', price: '28.99'}, {name: 'Miller Lite', category: 'Beer', price: '7.99'} ] let categories = { beerCounter:2, vodkaCounter:1, } for (let item of items) { item.couter = categories[`${item.category.toLowerCase()}Counter`] } console.log(items);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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