2015-09-12 50 views
-4

我试图访问对象数组中的所有值。 我的数据结构是这样的:在javascript中访问对象数组中的所有值

var data = [ 
    obj{ 
    x: 1, 
    y: 2 
    }, 
    obj{ 
    x:3, 
    y:9 
    } 
] 

我想一次让每一个x的值。

我试图用一个for循环,然后赋值给全局变量是这样的:

var var startValue; 
var startYValue; 
var startXValue; 
var endYValue; 
var endXValue; 
var endValue; 
for (var i = 0; i < data.length; i++) { 
    endYValue = data[i].endY; 
    endXValue = data[i].endX; 
    endValue = { x:endYValue, y:endXValue } 
    startYValue = data[i].startY; 
    startXValue = data[i].startX; 
    startValue = { x:data[i].startY, y:data[i].startX } 
    console.log(endValue.x) 
    } 

    console.log(endValue.x) 

而且我发现了第一的console.log(endValue.x)的工作,但是当我CONSOLE.LOG( endValue.x),它只显示最后一个x值而不是所有的x值。

任何帮助将不胜感激!

+0

请参阅回答这里:http://stackoverflow.com/a/19590901/3166303 – leeor

回答

0

你的数据阵列应该只是通过对象的每个项目,那么我们就可以循环和每个支撑分配给另一个数组:

var data = [{x:1, y:2}, {x:3,y:9}]; 
var arr = []; 

// get values of every x at once. 
for (var i=0; i<data.length; i++) arr.push(data[i].x); 
console.log(arr); // [1, 3] 
0

存在对循环in操作:

var data = [{x:10, y: 20}, {x: 30, y: 40}]; 
for (var i in data) { 
    var obj = data[i]; 

    if (!obj) 
     continue; 

    console.log(obj.x); 
    console.log(obj.y); 
} 

要访问第一个对象:vas startValue = data[0];

访问最后一个对象:vas startValue = data[data.length - 1];

要循环througs阵列,并找到最低/最大的x/y值:

var upperLeft = {x: data[0].x, y: data[0].y}; 
var bottomRight = {x: data[0].x, y: data[0].y}; 

for (var i in data) { 
    var obj = data[i]; 

    if (!obj) 
     continue; 

    if (obj.x < upperLeft.x) 
     upperLeft.x = obj.x; 

    if (obj.y < upperLeft.y) 
     upperLeft.y = obj.y; 

    if (obj.x > bottomRight.x) 
     bottomRight.x = obj.x; 

    if (obj.y > bottomRight.y) 
     bottomRight.y = obj.y; 

} 

console.log(JSON.stringify(upperLeft)); 
console.log(JSON.stringify(bottomRight));