gpt4 book ai didi

JavaScript “map” 函数

转载 作者:行者123 更新时间:2023-11-30 08:48:12 25 4
gpt4 key购买 nike

查看 map method在 JavaScript 中,我在这里做错了什么?

// Input: [ { name: "Kevin"}, { name: "Bob" } ]
// Output: [ { "Kevin" :0 }, { "Bob": 1 } ]
var map = function(arr, property) {
var i = 0;
var m = arr.prototype.map(makeKv);

// Input: { name: "Kevin" }
// Output: { "Kevin" = i } // GLOBAL

function makeKv(item) {
return {
item: i++
};
};

console.log("m : " + m);
};

JSFiddle

也请帮我摆脱global

最佳答案

这里有几个问题:

首先,

var m = arr.prototype.map(makeKv);

这里不需要prototype。只有在使用构造函数时才使用它,例如 Array.prototype.map。在这里,你只需要做arr.map

其次,

function makeKv(item) {
return {item: i++};
};

你永远不会在任何地方声明i。你怎么能给不存在的东西加一。在此之前你需要有 var i = 0;

最后,return {item: i++}; 将创建一个名为 literally “item” 的 key 。您需要先声明对象 (var ret = {};),然后使用 [item] 设置值。

Array.map 的回调将数组中的元素作为第一个参数传递,因此 item 将是一个对象。您需要执行 item[property] 以获得您想要的值。

附言不要在 console.log 中执行 "m : "+ m,这将连接字符串,从而将 m 转换为字符串。使用 , 代替:console.log("m : ", m);

所以,大家一起尝试:

var map = function(arr, property) { 
var i = 0;
var m = arr.map(makeKv);

function makeKv(item) {
var ret = {};
ret[item[property]] = i++;
return ret;
};

console.log("m : ", m);
}

演示:http://jsfiddle.net/FgdSj/3/

编辑:Array.map 的回调将数组中的索引作为第二个参数传递,因此 var i = 0;这里不需要:

var map = function(arr, property) {      
var m = arr.map(makeKv);

function makeKv(item, index) {
var ret = {};
ret[item[property]] = index;
return ret;
};

console.log("m : ", m);
}

演示:http://jsfiddle.net/FgdSj/5/

关于JavaScript “map” 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20055112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com