我正在尝试使用纯JS重新创建Underscore pluck函数。但是,我不断得到未定义数组的返回,而不是返回数组中对象属性的实际值。
检查另一个线程here我发现您可以使用以下代码在jQuery中重现它...
$.pluck = function(arr, key) {
return $.map(arr, function(e) { return e[key]; })
}
...但是我很难用纯JS复制它。我尝试了以下操作,但是这只是为我返回了一个未定义的数组。
var pluck = function(arr,key){
var newArr = [];
for (var i = 0, x = arr.length; i < x; i++){
if (arr[i].hasOwnProperty(key)){
newArr.push(arr[i].key)
}
}
return newArr;
}
因此,目标将是以下目标,除了使用下划线_.pluck之外,仅使用JS函数名称即可。 var pluck = function(arr,key){...}
var Tuts = [{name : 'NetTuts', niche : 'Web Development'}, {name : 'WPTuts', niche : 'WordPress'}, {name : 'PSDTuts', niche : 'PhotoShop'}, {name : 'AeTuts', niche : 'After Effects'}];
var niches = _.pluck(Tuts, 'niche');
console.log(niches);
// ["Web Development", "WordPress", "PhotoShop", "After Effects"]
有人可以指引我正确的方向吗?
最佳答案
在ES5中:
function pluck(array, key) {
return array.map(function(obj) {
return obj[key];
});
}
在ES6中:
function pluck(array, key) {
return array.map(o => o[key]);
}