如何在Javascript中从数组中的数组中提取值?

4

我有一个变量如下:

var dataset = {
"towns": [
    ["Aladağ", "Adana", [35.4,37.5], [0]],
    ["Ceyhan", "Adana", [35.8,37], [0]],
    ["Feke", "Adana", [35.9,37.8], [0]]
    ]
};

变量中有很多城镇数据。我怎样才能高效地从数据中提取第三个元素的第一个元素?即下面的...应该是什么?
var myArray = ...
//myArray == [35.4,35.8,35.9] for the given data 

如果我想把两个值都存储在数组中,应该怎么做呢?

var myArray = ...
//myArray == [[35.4,37.5], [35.8,37], [35.9,37.8]] for the given data 

我对Javascript非常陌生。希望有一种方法可以不使用for循环。


3
for循环有什么问题? - Veger
连接到 JSON 的地方在哪里? - bukart
@Veger 没有问题。我来自MATLAB背景。这就是我寻找非循环解决方案的原因。 - petrichor
1
JavaScript中的循环并不邪恶 :) - Veger
以下有一种无需循环的方法:https://dev59.com/C2zXa4cB1Zd3GeqPVZ77#14083662 - bukart
2个回答

8

在新版本的浏览器中,您可以使用mapforEach来避免使用for循环。

var myArray = dataset.towns.map(function(town){
  return town[2];
});
// myArray == [[35.4,37.5], [35.8,37], [35.9,37.8]]

但是for循环更加兼容性好。

var myArray = [];
for(var i = 0, len = dataset.towns.length; i < len; i++){
  myArray.push(dataset.towns[i][2];
}

2

没有循环就不可能实现:

var myArray = [];
for (var i = 0; i < dataset.towns.length; i++) {
    myArray.push(dataset.towns[i][2][0]);
}
// at this stage myArray = [35.4, 35.8, 35.9]

如果我想把两个值都存储在数组中,该怎么办?
同样的,你只需要添加整个数组,而不仅仅是第一个元素:
var myArray = [];
for (var i = 0; i < dataset.towns.length; i++) {
    myArray.push(dataset.towns[i][2]);
}
// at this stage myArray = [[35.4,37.5], [35.8,37], [35.9,37.8]]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接