为什么我的拔毛功能不起作用

Why my pluck function not working?

本文关键字:功能 不起作用 我的 毛功能 为什么      更新时间:2023-09-26

我认为我的map和pull函数是集合正确的,但当我试图调用pull来获取汽车对象的"类型"时,它返回一个空数组。。。。?空数组。。。???

更新:感谢您指出它是对象。。。。。所以我在地图函数中添加了for,但似乎不起作用?有什么问题吗?

    function map(collection,iterator){
        var result=[];
       if(Array.isArray(collection)){
        for (var i=0;i<collection.length;i++){
            result.push(iterator(collection[i]));
            }
        }else{
        for (var key in collection){
            result.push(iterator(collection[key]))};
            }
            return result;
        };
    function pluck(collection, key) {
        return map(collection, function (value) {
            return value[key]
        });
    }
    var car = { type: "Fiat", model: "500", color: "white" };
    console.log(pluck(car, function (auto) {
        return auto.type;
    }));
> the result: [] 
console.log(pluck(car, function (auto) {
    return auto.type;
}));

应该是

console.log(pluck(car, 'type'));

此外,car需要是一个数组。

var car = [{ type: "Fiat", model: "500", color: "white" }];

您正在通过此

var car={类型:"菲亚特",型号:"500",颜色:"白色"};

而映射函数需要数组。

若要传递对象,请在循环中使用

Pluck函数只对数组有意义,因为只有数组才能映射。对于您只想读取属性的对象:

var car = { type: "Fiat", model: "500", color: "white" };
console.log( car.type );

function map(collection, filter) {
  var result = [];
  for (var i = 0; i < collection.length; ++i) {
    result.push(filter(collection[i]))
  }
  return result;
}
function pluck(collection, filter) {
  return map(collection, filter);
}
var cars = [{type: "Fiat", model: "500", color: "white"}]
var result = pluck(cars, function(auto) {
  return auto.type;
})
document.write(JSON.stringify(result))

因为它是一个对象,而不是数组