簡體   English   中英

如何在性能方面適當地迭代項目並將其放入JavaScript中的新數組中?

[英]How can I properly iterate through items and put it in a new array in JavaScript in terms of performance?

這是我的代碼:

let newArr = []

const items = [
    {
        name: 'JTB 0110-01',
        offers: ['one', 'two']
    },
    {
        name: 'LOBA CHEMIE',
        offers: ['three', 'four', 'five']
    },
    //more
]

items.forEach(item => {
    item.offers.forEach(i => newArr.push(i));
})

//more code

我想遍歷items數組,並且每個offer屬性將被迭代並推送到新數組。

就目前的代碼而言,問題仍然存在,但是在繼續進行foreach下的代碼之前,我希望循環已經完成。 我該怎么做呢? 任何幫助將非常感激。

更新:好的,首先,抱歉,不清楚。 我希望它是同步的,就像在迭代后轉到代碼之前一樣,我希望循環完成。

您可以將Array#concat擴展語法...和映射數組一起使用。

 var items = [{ name: 'JTB 0110-01', offers: ['one', 'two'] }, { name: 'LOBA CHEMIE', offers: ['three', 'four', 'five'] }], array = Array.prototype.concat(...items.map(({offers}) => offers)); console.log(array); 

您可以結合使用spread語法和reduce方法。

reduce()方法對一個累加器和數組中的每個元素(從左到右)應用一個函數,以將其減小為單個值。

 const items = [ { name: 'JTB 0110-01', offers: ['one', 'two'] }, { name: 'LOBA CHEMIE', offers: ['three', 'four', 'five'] }] let result = items.reduce(function(acc,elem){ acc.push(...elem.offers); return acc; },[]); console.log(result); 

您可以使用spread syntax來組合offer密鑰的值

 let newArr = [] const items = [{ name: 'JTB 0110-01', offers: ['one', 'two'] }, { name: 'LOBA CHEMIE', offers: ['three', 'four', 'five'] } ] var newArray = []; items.forEach(function(item) { // // ... is spread syntax which will combine the array newArray.push(...item.offers) }) console.log(newArray) 

暫無
暫無

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

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