我认为我的地图和采集函数是正确的集合,但当我尝试调用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: []
答案 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))