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
?正确吗