我正在尝试访问对象数组中的所有值。 我的数据结构是这样的:
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)工作但是当我在全局控制台.log(endValue.x)时,它只显示最后的x值而不是所有的x值。
任何帮助都将非常感谢!!
答案 0 :(得分:0)
您的数据数组应该只是每个项目的对象,然后我们可以循环并将每个prop分配给另一个数组:
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]
答案 1 :(得分:0)
存在in
运算符for循环:
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));