簡體   English   中英

如何基於數組和另一個對象創建新對象?

[英]how do i create a new object based off an array and another object?

我正在嘗試基於現有數組創建一個新對象。 我想創建一個如下所示的新對象

{ jack: 'jack', content: 'ocean'},
{ marie: 'marie', content: 'pond'},
{ james: 'james', content: 'fish biscuit'},
{paul: 'paul', content: 'cake'}

 const words = ['jack','marie','james','paul'] const myUsers = [ { name: 'jack', likes: 'ocean' }, { name: 'marie', likes: 'pond' }, { name: 'james', likes: 'fish biscuits' }, { name: 'paul', likes: 'cake' } ] const usersByLikes = words.map(word => { const container = {}; container[word] = myUsers.map(user => user.name); container.content = myUsers[0].likes; return container; })

我沒有得到正確的對象,而是返回一個列表。

[ { jack: [ 'shark', 'turtle', 'otter' ], content: 'ocean'}, { marie: [ 'shark', 'turtle', 'otter' ], content: 'ocean' }, { james: [ 'shark', 'turtle', 'otter' ], content: 'ocean' }, { paul: [ 'shark', 'turtle', 'otter' ], content: 'ocean'} ]

單詞數組的作用是什么? 我認為下面的代碼會起作用。

const result = myUsers.map(user => ({
[user.name]: user.name,
content:  user.likes
}));
console.log('result', result);

如果要過濾單詞數組中的用戶,那么下面的解決方案對您有用。

const result = myUsers.filter(user => {
if (words.includes(user.name)) {
return ({
  [user.name]: user.name,
  content:  user.likes
})
}
return false;
});

您可以通過一個循環來滿足您的需求。

@aravindan-venkatesan 給出的答案應該會給你你正在尋找的結果。 但重要的是要考慮:

使用.map() javascript 返回一個長度相同的數組,以及你告訴它在map()內部進行的任何轉換。

如果你想創建一個全新的對象,你自己的構造。 嘗試使用.reduce() 這允許您設置輸入變量,即:對象、數組或字符串。

然后循環,並准確返回您想要的內容,而不是舊數組的映射版本。

請參閱此處了解更多詳情:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce

暫無
暫無

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

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