在Javascript中映射数组数组的每个数组的第一个元素

时间:2017-11-21 14:14:14

标签: javascript arrays loops

我有一个像这样的数组:

myData = [
          ["name1", 34.1, 43.1, 55.2],
          ["name2", 5.3, 23.6, 40.9],
          ["name3", 43.5, 77.8, 22.4]
         ];

我想得到一个只包含每个数组的第一个元素的数组,如下所示:["name1", "name2", "name3"]

我尝试这样做但不起作用:

var arrayTitle = myData.map(function(x) {
    return [myData[x][0]];
});

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

你可以只返回x的第一个elementn,它是外部数组的一个元素。



var myData = [["name1", 34.1, 43.1, 55.2], ["name2", 5.3, 23.6, 40.9], ["name3", 43.5, 77.8, 22.4]],
    arrayTitle = myData.map(function(x) {
        return x[0];
    });

console.log(arrayTitle);




答案 1 :(得分:1)

您的x本身就是一个数组。因此,您无需再次触摸myData。

var arrayTitle = myData.map(function(x) {
    return x[0];
});

或传统的循环



myData = [
          ["name1", 34.1, 43.1, 55.2],
          ["name2", 5.3, 23.6, 40.9],
          ["name3", 43.5, 77.8, 22.4]
         ];


var arrayTitle = [];

for(var k in myData)
 arrayTitle.push(myData[k][0]);
 
 console.log(arrayTitle);




答案 2 :(得分:1)

使用您的实际代码return [myData[x][0]],您将返回undefined,因为x是已迭代的项目,因此它是array而不是索引。

使用包装[]在这里没用,它是一种破坏性的语法,我们在这里不需要它。

您应该只在每次迭代中返回item[0]

var res = myData.map(function(arr) {
  return arr[0];
});

<强>演示:

myData = [
  ["name1", 34.1, 43.1, 55.2],
  ["name2", 5.3, 23.6, 40.9],
  ["name3", 43.5, 77.8, 22.4]
];


var res = myData.map(function(arr) {
  return [arr[x][0]];
});
console.log(res);