【问题标题】:How to loop through key/value object in Javascript? [duplicate]如何循环遍历 Javascript 中的键/值对象? [复制]
【发布时间】:2011-02-26 21:08:17
【问题描述】:
var user = {};

现在我想创建一个setUsers() 方法,该方法接受一个键/值对对象并初始化user 变量。

setUsers = function(data) {     
   // loop and init user    
}

数据在哪里:

234: "john", 23421: "smith", ....

【问题讨论】:

  • 如何从新问题中复制旧问题?
  • @PauloCoghi 模组显然喝醉了,没关系...
  • 他们选择了得票多的那个。也写得好一点。它有更多的答案和更多的选票。把那个放在这个上面是有意义的。

标签: javascript loops for-loop iteration key-value


【解决方案1】:

注意从对象原型继承的属性(如果您在页面上包含任何库,例如旧版本的 Prototype,就会发生这种情况)。您可以使用对象的hasOwnProperty() 方法来检查这一点。在使用for...in 循环时,这通常是一个好主意:

var user = {};

function setUsers(data) {
    for (var k in data) {
        if (data.hasOwnProperty(k)) {
           user[k] = data[k];
        }
    }
}

【讨论】:

  • 在没有 for in 循环的情况下有没有办法做到这一点?我担心通过大键值对的速度(而且我知道 Crockford 不喜欢使用 JSLint,但我不确定他的推理)。有理由担心这些事情吗?
  • @streetlight:这取决于环境。如果您可以依赖 ECMAScript 5(所有现代浏览器都可以,Node.js 也是如此),那么您可以选择 Object.keys()。例如,如果您需要支持 IE for...in。
【解决方案2】:
for (var key in data) {
    alert("User " + data[key] + " is #" + key); // "User john is #234"
}

【讨论】:

    【解决方案3】:

    类似这样的:

    setUsers = function (data) {
        for (k in data) {
            user[k] = data[k];
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多