假設我想轉的array.map迭代返回一個對象數組
let originalArray = [a,b,c]
陣列到這種格式的一個陣列:
[{0:a},{1:b},{2:c}]
我使用映射函數到originalArray遍歷這樣
originalArray.map((val, i) => {i:val})
但是它返回所有未定義的值。我的問題是我如何使用地圖功能來達到預期的效果?
假設我想轉的array.map迭代返回一個對象數組
let originalArray = [a,b,c]
陣列到這種格式的一個陣列:
[{0:a},{1:b},{2:c}]
我使用映射函數到originalArray遍歷這樣
originalArray.map((val, i) => {i:val})
但是它返回所有未定義的值。我的問題是我如何使用地圖功能來達到預期的效果?
您需要使用[]
表示法來評估表達式並使用它下面的值。同樣用()
括號包裝返回的對象,如果沒有這個,編譯器就會知道對象的開始{
,因爲箭頭函數體開始時會出現錯誤的結果。
let originalArray = ['a','b','c'];
let mappedArray = originalArray.map((item, index) => ({[index]: item}));
console.log(mappedArray);
你的代碼片段是這樣的一個,而如果你不明確未定義默認返回返回任何東西,它。
let originalArray = ['a','b','c'];
let mappedArray = originalArray.map((item, index) => {
index: item;
return undefined;
});
console.log(mappedArray);
你的箭頭功能語法不正確,因爲在這種情況下,{
和}
被解釋爲塊分隔符:
(val, i) => {i:val} // Here '{' and '}' are a block delimiters.
你需要,至少,請將其在括號之間強制它被解釋爲對象表達式:
(val, i) => ({[i]:val}) // This works.
// Also notice the '[' and ']' surrounding "i" meaning that the
// value of i should be used as key instead of actual "i".
想想這個:
(val, i) => {i, val}
...什麼是應該回來? {i:<i_value>, val:<val_value>}
或不確定的(因爲i, val
評估爲VAL值,但封閉在塊分隔符,你需要明確的用戶「迴歸」聲明:
$ node
> let f = (x)=>{x+1}
undefined
> f(3)
undefined
> let f = (x)=>{return x+1}
undefined
> f(3)
4
或者你可以做這樣的事情,但是,在這種情況下,利用箭頭功能會變得毫無意義IMHO:
(val, i) => {return {i:val}}
據解釋'{}'作爲塊不是對象包裹大括號中的括號(這只是的事情停止該一個。加工) – evolutionxbox