我有一个像这样的数组:
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]];
});
有什么建议吗?
答案 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);