【问题标题】:Change key when looping through json循环通过json时更改密钥
【发布时间】:2015-07-20 12:10:28
【问题描述】:

是否可以在使用外部变量循环对象时更改键。想象一下:

var data = [{
    "id": 1,
    "name": "Simon",
    "age": 13
}, {
    "id": 2,
    "name": "Helga",
    "age": 18
}, {
    "id": 3,
    "name": "Tom",
    "age": 27
}, ]

var key = name;

for (var i = 0; i < data.length; i++) {
    var output = data[i].key;
}

但这当然会以未定义的输出结束。目标是构建一个可以处理不同循环的函数。

【问题讨论】:

  • 使用括号表示法:data[i][key]
  • 当您的问题解决后,别忘了选择一个答案!如果还没有解决,请更新您的问题!

标签: javascript arrays json for-loop


【解决方案1】:

您可以像访问数组一样在 JavaScript 中访问对象。这是您要查找的代码。

var data = [{
    "id": 1,
    "name": "Simon",
    "age": 13
}, {
    "id": 2,
    "name": "Helga",
    "age": 18
}, {
    "id": 3,
    "name": "Tom",
    "age": 27
}, ]

var key = "name";

for (var i = 0; i < data.length; i++) {
    var output = data[i][key];
}

关于另一个答案(似乎已被删除),我不建议使用 foreach,因为 Internet Explorer 8 不支持它。

但是,您可以使用:

var key = "name";

for (var i in data) {
  if(data.hasOwnProperty(i))
  {
    var output = data[i][key];
  }
}

【讨论】:

  • 不错的答案。然而,我想知道在 JSON 对象的情况下是否需要 hasOwnProperty() 检查?似乎您不会,但无论如何添加它可能是一种好习惯。
【解决方案2】:

我相信你需要这样的功能:

function handleKey(objectArray, key) {
    for (var index in objectArray) {
        //do something with objectArray[index][key]
    }
}

像这样调用这个函数:handleKey(data, "name")

该函数处理对象数组的关键属性。您可以根据需要进一步自定义,我决定简短一些以保持简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多