我有一个像这样的JSON数组:
_htaItems = [ {"ID":1, "parentColumnSortID":"0", "description":"Precondition", "columnSortID":"1", "itemType":0}, {"ID":2, "parentColumnSortID":"0", "description":"Precondition", "columnSortID":"1", "itemType":0}]
我想通过将ID,列名和新值传递给函数来更新它:
function updateJSON(ID, columnName, newValue) { var i = 0; for (i = 0; i < _htaItems.length; i++) { if (_htaItems[i].ID == ID) { ????? } } }
我的问题是,如何更新值?我知道我可以做以下事情:
_htaItems[x].description = 'New Value'
但是出于我的原因,列名是作为字符串传递的。
在JavaScript中,您可以使用文字符号访问对象属性:
the.answer = 42;
或使用带括号的表示法,使用字符串作为属性名称:
the["answer"] = 42;
这两个语句的作用 完全相同 ,但是在第二个语句的情况下,由于括号中的内容是字符串,因此它可以是解析为字符串的任何表达式(或可以强制为一个)。所以所有这些都做同样的事情:
x = "answer"; the[x] = 42; x = "ans"; y = "wer"; the[x + y] = 42; function foo() { return "answer"; } the[foo()] = 42;
… answer将对象的属性设置the为42。
answer
the
42
因此,如果description在您的示例中由于它是从其他地方传递给您而不能成为文字,则可以使用方括号表示法:
description
s = "description"; _htaItems[x][s] = 'New Value';