簡體   English   中英

從數組映射返回對象

[英]return object from array map

假設我可以硬編碼以下內容:

const data = [ { a: 0, b: 1}, {a:2,b:3},... ]

但是我有一個數組中的數據,我想寫如下內容:

const data = my_arr.map((element,index) => { a:element, b:index});

如何從數組映射中產生這種對象?

您只需要在返回的對象文字周圍添加括號。

 const my_arr = [1,2,3,4,5]; const data = my_arr.map((element, index) => ({ a: element, b:index })); // ^ ^ console.log(data);

原因是 JavaScript 解析器規則假定=>后面的{是函數體的開始。 為了解決這個問題,我們將對象包裝在() (或者我們可以添加一個return語句)

在此處閱讀更多信息: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Returning_object_literals

啊,想通了。

匿名對象與作用域運算符發生沖突,因此您需要將對象封裝在作用域塊中,並通過從那里返回來傳遞對象:

const data = my_arr.map((element,index) => { return {a:element,b:index}});

您必須在返回的對象周圍添加括號以將其與簡單塊區分開來:

 const my_arr = [1, 2, 4, 3, 4]; const data = my_arr.map((element, index) => ({ a: element, b: index })); console.log(data);

或者明確返回:

 const my_arr = [1, 2, 4, 3, 4]; const data = my_arr.map((element, index) => { return { a: element, b: index }; }); console.log(data);

我想是一樣的

 var my_arr = [...Array(5).keys()] var result = my_arr.map((element,index) => ({ a: element, b: element + 1 })); console.log('result', result)

所以,它有效

見輸出:

 var results = []; [...Array(11).keys()].forEach((el) => { if (el % 2 === 0) { results.push({ a: el, b: el + 1 }) } }) console.log('results',results)

暫無
暫無

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

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