最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

json - How to extract values from an array of arrays in Javascript? - Stack Overflow

programmeradmin4浏览0评论

I have a variable as follows:

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

The variable has a lot of town data in it. How can I extract the first elements of the third ones from the data efficiently? I,e, what will ... be below?

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

And what to do if I want to store both values in the array? That is

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

I'm very new to Javascript. I hope there's a way without using for loops.

I have a variable as follows:

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

The variable has a lot of town data in it. How can I extract the first elements of the third ones from the data efficiently? I,e, what will ... be below?

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

And what to do if I want to store both values in the array? That is

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

I'm very new to Javascript. I hope there's a way without using for loops.

Share Improve this question edited Dec 29, 2012 at 16:23 petrichor asked Dec 29, 2012 at 16:14 petrichorpetrichor 6,5694 gold badges38 silver badges48 bronze badges 5
  • 3 What's wrong with for-loops? – Veger Commented Dec 29, 2012 at 16:15
  • where's the connection to json?! – bukart Commented Dec 29, 2012 at 16:17
  • @Veger Nothing wrong. I'm ing from MATLAB background. That's why I look for non-loop solution I think. – petrichor Commented Dec 29, 2012 at 16:17
  • 1 Loops in JavaScript are not evil :) – Veger Commented Dec 29, 2012 at 16:19
  • see below, there's a loop free way: stackoverflow./questions/14083524/… – bukart Commented Dec 29, 2012 at 16:32
Add a ment  | 

2 Answers 2

Reset to default 8

On newer browsers, you can use map, or forEach which would avoid using a for loop.

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

But for loops are more patible.

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

Impossible without loops:

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]

And what to do if I want to store both values in the array?

Similar, you just add the entire array, not only the first element:

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]]
发布评论

评论列表(0)

  1. 暂无评论