如何在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];
        }
    }
}