Javascript 映射函数返回未定义
下面,您可以看到一个简单的数组映射函数,我不明白为什么调用Javascript 映射函数返回未定义,javascript,function,methods,Javascript,Function,Methods,下面,您可以看到一个简单的数组映射函数,我不明白为什么调用索引[0]时会有未定义的 当我调用返回索引时,我得到了一个数字数组。所以他们存在 资料来源: 让aRa=[ {英雄:“巨魔”,年龄:12岁,头发:“红色”}, {英雄:“rikky”,年龄:11岁,头发:“紫色”}, {英雄:“技术人员”,年龄:40岁,头发:“黄色”} ] 让joyRide=aRa.map(函数(项、索引、数组){ 返回指数[0]; }); log(joyRide)传入的回调的第二个参数获取一个数字。您试图为一个数字编
索引[0]
时会有未定义的
当我调用返回索引时,我得到了一个数字数组。所以他们存在
资料来源:
让aRa=[
{英雄:“巨魔”,年龄:12岁,头发:“红色”},
{英雄:“rikky”,年龄:11岁,头发:“紫色”},
{英雄:“技术人员”,年龄:40岁,头发:“黄色”}
]
让joyRide=aRa.map(函数(项、索引、数组){
返回指数[0];
});
log(joyRide)
传入的回调的第二个参数获取一个数字。您试图为一个数字编制索引,但未定义。的回调函数的第二个参数是具有数值的索引,对其使用索引将始终返回未定义的
要从阵列中的每个对象访问第一个密钥,可以使用以下方法尝试:
让aRa=[
{英雄:“巨魔”,
年龄:12岁,
头发:“红色”,},
{英雄:“瑞克”,
年龄:11岁,
头发:“紫色”},
{英雄:“技术人员”,
年龄:40,,
头发:“黄色”},
]
让joyRide=aRa.map({hero}=>hero);
console.log(joyRide)
如果要提取键,可以使用对象分解映射提取键引用的单个键-值对
const英雄=[
{英雄:“巨魔”,年龄:12岁,头发:“红色”},
{英雄:“rikky”,年龄:11岁,头发:“紫色”},
{英雄:“技术人员”,年龄:40岁,头发:“黄色”}
]
const name=heromes.map({hero}=>hero);
const ages=英雄.map({age}=>age);
const hairColors=heromes.map({hair}=>hair);
log(`Names:${Names.join(',')}`);
log(`Ages:${Ages.join(',')}`);
log(`Hair Colors:${hairColors.join(',')}`)代码>如果你想得到第一个元素的“英雄”,你可以通过
console.log(aRa[0].hero)
如果你想获得所有物品的英雄元素并将其映射到一个新的数组中,你应该这样做
let aRa = [
{ hero: "troll" , age: 12 , hair: "red" },
{ hero: "rikky" , age: 11 , hair: "purple" },
{ hero: "techies" , age: 40 , hair: "yellow" }
]
let joyRide = [];
for (i = 0; i<aRa.length; i++) {
joyRide.push(aRa[i].hero);
}
console.log(joyRide)
让aRa=[
{英雄:“巨魔”,年龄:12岁,头发:“红色”},
{英雄:“rikky”,年龄:11岁,头发:“紫色”},
{英雄:“技术人员”,年龄:40岁,头发:“黄色”}
]
让欢乐驰骋=[];
对于(i=0;iMap函数,它会根据调用Map函数的数组长度自动执行循环
let joyRide = aRa.map(function(item, index, array) {
return item;
});
如果你想得到英雄的数组
let joyRide = aRa.map(function(item, index, array) {
return item.hero;
});
解释
/*第一次执行循环时*/
物品将有价值{英雄:“巨魔”,年龄:12岁,头发:“红色”}
索引将具有值0
数组将有值
[
{ hero: "troll" , age: 12 , hair: "red" },
{ hero: "rikky" , age: 11 , hair: "purple" },
{ hero: "techies" , age: 40 , hair: "yellow" }
]
[
{ hero: "troll" , age: 12 , hair: "red" },
{ hero: "rikky" , age: 11 , hair: "purple" },
{ hero: "techies" , age: 40 , hair: "yellow" }
]
/*当第二次循环执行时*/
物品将有价值{英雄:“rikky”,年龄:11岁,头发:“紫色”}
索引将具有值1
数组将有值
[
{ hero: "troll" , age: 12 , hair: "red" },
{ hero: "rikky" , age: 11 , hair: "purple" },
{ hero: "techies" , age: 40 , hair: "yellow" }
]
[
{ hero: "troll" , age: 12 , hair: "red" },
{ hero: "rikky" , age: 11 , hair: "purple" },
{ hero: "techies" , age: 40 , hair: "yellow" }
]
依此类推,直到数组的长度。索引[0];
始终是未定义的,因为它是一个数字。索引
是一个数字。您希望得到什么索引[0]
to be?这段代码应该做什么?现在它没有意义,也没有描述目标是什么。我也不确定你想做什么。你希望.map中的函数做什么?这是array.prototype.map()的文档如何调用firts键中的第一个元素?在1个键中表示英雄属性array@N_is_my_name“firts key中的第一个元素”是什么意思?@N_是我的名字你希望输出是什么样子?属性值(英雄)@N_是我的名字,应该是项。key
?正确吗