如何在Javascript中循环遍历键/值对象?
现在我想创建一个如何在Javascript中循环遍历键/值对象?,javascript,loops,for-loop,iteration,key-value,Javascript,Loops,For Loop,Iteration,Key Value,现在我想创建一个setUsers()方法,它接受一个键/值对对象并初始化user变量 var user = {}; 其中数据如下所示: setUsers = function(data) { // loop and init user } 大概是这样的: 234: "john", 23421: "smith", .... 注意从对象原型继承的属性(如果在页面上包含任何库,例如原型的旧版本,则可能会发生这种情况)。您可以使用对象的hasOwnProperty()方法检
setUsers()
方法,它接受一个键/值对对象并初始化user
变量
var user = {};
其中数据如下所示:
setUsers = function(data) {
// loop and init user
}
大概是这样的:
234: "john", 23421: "smith", ....
注意从对象原型继承的属性(如果在页面上包含任何库,例如原型的旧版本,则可能会发生这种情况)。您可以使用对象的
hasOwnProperty()
方法检查这一点。在循环中为…使用时,这通常是一个好主意:
for (var key in data) {
alert("User " + data[key] + " is #" + key); // "User john is #234"
}
在没有for-in循环的情况下,是否还有其他方法可以做到这一点?我担心通过大键值对的速度(我知道Crockford不喜欢使用JSLint,但我不确定他的推理)。有理由担心这些事情吗?@streetlight:这取决于环境。如果您可以依赖ECMAScript 5(所有现代浏览器都有,Node.js也是如此),那么您可以选择以下选项。如果你需要支持IE如何从新问题复制旧问题?@PauloCoghi mods显然喝醉了,没关系……他们选择了投票率更高的问题。它也写得好一点。它得到了更多的答案和更多的选票。把那个放在这个上面是有道理的。
for (var key in data) {
alert("User " + data[key] + " is #" + key); // "User john is #234"
}
var user = {};
function setUsers(data) {
for (var k in data) {
if (data.hasOwnProperty(k)) {
user[k] = data[k];
}
}
}