2017-03-24 81 views
0

我有一個函數,它接受一個對象數組和一個字符串,它代表一個屬性。該函數應該從每個對象中返回一個包含該屬性的數組。什麼傳遞給數組上的.map()迭代器函數?

這裏是我的示例代碼:

function pluck(array, property) { 
    var newArr = []; 
    array.map(function(paints){ 
     return newArr.push(paints[property]); 
    }); 
    return newArr; 
} 

這將返回一個新的數組和它的作品。但是當函數將一個對象數組作爲參數之一時......傳遞給map方法中的匿名迭代器函數的是什麼?密鑰的價值?

它將如何迭代使用map方法的對象數組?

+1

地圖功能在這裏使用不當。 –

+1

地圖實際上會爲你製作一個新的陣列,所以你不需要newArr和push。你將地圖視爲「forEach」,而不是。映射中的lambda按順序傳遞給數組中的每個元素,結果是一個數組,其中包含每個調用返回的lambda元素。 – pvg

+1

[docs](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map) - '(value,index,array)=>索引處的新值' –

回答

1

對你的問題的評論解釋你的代碼中發生了什麼。

當您在數組上調用映射時,映射函數提供了3個參數,這些參數總是使用,有時甚至很少按順序使用。

const result = items.map(function(element, index, items) { 
    // do the mapping 
}); 

該函數的調用爲反過來原始數組items的每個元素,並放置在result陣列的相同索引位置的函數的結果。

函數參數如下:

  • 元件 - 這是從陣列中的當前元素
  • 索引 - 當前索引
  • 項 - 原陣列在其上的地圖被稱爲

您的採摘功能可寫爲:

function pluck(arr, prop) { 
    return arr.map(item => item[prop]); 
} 
+0

請在這裏解釋答案,否則這將是一個不完整的答案 – slebetman