为什么我的采集功能不起作用?

时间:2015-12-07 20:45:57

标签: javascript callback

我认为我的地图和采集函数是正确的集合,但当我尝试调用pluck来获取car对象的“类型”时,它返回一个空数组....?空数组...... ???

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

    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: [] 

5 个答案:

答案 0 :(得分:2)

console.log(pluck(car, function (auto) {
    return auto.type;
}));

应该是

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

此外,car必须是一个数组。

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

答案 1 :(得分:2)

你传递了这个

  

var car = {type:&#34; Fiat&#34;,model:&#34; 500&#34;,color:&#34; white&#34; };

虽然你的map函数需要数组。

如果要传递对象,请使用 for-in 循环。

答案 2 :(得分:2)

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

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

console.log( car.type );

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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))