为什么我对这个Codechool挑战的解决方案不正确?

时间:2017-08-19 13:34:57

标签: javascript arrays

这是CodeSchool的问题 - 使用带数组的映射

在Maple Mountain,开发团队收到了客户终端的一些名称数据,他们希望用这些数据为每位乘客定制问候语。但是数据包含一个包含许多子阵列的数组,其中每个乘客的名字和姓氏都被分开了。

他们希望乘坐乘客阵列并将这些子阵列转换为包含每位乘客的名字和姓氏的字符串。

创建一个modifiedNames变量来存储我们的新数据。

将passengers.map()分配给modifiedNames变量。这将允许我们传入一个函数,用于数组中的每个元素。

将匿名函数传递给map()。

匿名函数应该将arrayCell作为参数,并使用它来返回带有乘客名字和姓氏的字符串。换句话说,如果你传入一个[“Jason”,“Millhouse”]数组,该函数应返回一个“Jason Millhouse”字符串。

这是我的解决方案 -

var passengers = [ ["Thomas", "Meeks"],
                   ["Gregg", "Pollack"],
                   ["Christine", "Wong"],
                   ["Dan", "McGaw"] ];
var modifiedNames= passengers.map(function(arrayCell){
  for( var i=0;i<passengers.length; i++){
   arrayCell= passengers[i][0]+" "+ passengers[i][1];
  }
  return arrayCell;
});
console.log(modifiedNames);

为什么不起作用?

1 个答案:

答案 0 :(得分:1)

map函数已遍历数组,因此无需在其中循环。传递给你的函数(arrayCell)的变量实际上是passenger [i]。

&#13;
&#13;
var passengers = [ ["Thomas", "Meeks"],
                   ["Gregg", "Pollack"],
                   ["Christine", "Wong"],
                   ["Dan", "McGaw"] ];
var modifiedNames = passengers.map(function(arrayCell) {
  return arrayCell.join(' '); //arrayCell[0] + ' ' + arrayCell[1];
});
console.log(modifiedNames);
&#13;
&#13;
&#13;

Array.prototype.join函数将数组的所有元素与传入的字符串参数连接起来。使用此函数代替旁边的注释代码,允许此函数返回全名,假设不只是名称和姓氏以数组形式传入。