gpt4 book ai didi

javascript - JS循环遍历对象

转载 作者:行者123 更新时间:2023-11-30 17:26:50 26 4
gpt4 key购买 nike

首先,我很抱歉,因为这可能会非常简单。但是我在 PHP 中工作很多,但是这种语法在 JS 中不起作用。

我有以下代码片段:

var rangeArr = [];

// This piece is inside an loop of adding elements...
rangeArr[row_id] = {"row_x": row_x, "row_y": row_y, "row_name": row_name, "row_dir": row_dir, "row_length": row_length, "row_height": row_height};
row_id++;

例如,我将获取此对象(从 Chrome 控制台获取):

rangeArr
[undefined × 1,
Object
row_dir: "lr"
row_height: "6"
row_length: "5"
row_name: ""
row_x: 45
row_y: 71
__proto__: Object
,
Object
row_dir: "lr"
row_height: "6"
row_length: "6"
row_name: ""
row_x: 95
row_y: 208
__proto__: Object
]

我正在使用以下代码来遍历对象数组:

for (var item in rangeArr) {
if(typeof(item) !== 'undefined'){
console.log(item.row_x);
}
}

但我只收到未定义的错误...当我查看控制台日志时,整个 item 仅包含 row_id。这意味着只检索索引,而不检索对象本身。

正如我之前所说,我对 JS 对象知之甚少,但我认为这是执行此操作的正确方法。

那么我怎样才能让我的代码正常工作,以便我可以在需要时接收数据?

最佳答案

在您的for in 循环中,item 实际上是数组键,而不是数组元素值。要获取对象,请使用 rangeArr[item]

for (var item in rangeArr) {
var obj = rangeArr[item];
if(typeof(obj) !== 'undefined'){
console.log(obj.row_x);
}
}

也就是说,for in 循环在数组上不是一个好主意。首选基本增量 for 循环或 forEach。引用this question了解更多信息。


看起来您正在手动生成增量 key 。相反,您可能更喜欢使用 Array.prototype.push() :

rangeArr.push({"row_x": row_x, "row_y": row_y, "row_name": row_name, "row_dir": row_dir, "row_length": row_length, "row_height": row_height});

关于javascript - JS循环遍历对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24082440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com