我有一个像这样的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'
但是在我的原因中,列名称是作为字符串传递的。
答案 0 :(得分:23)
在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
的{{1}}属性设置为the
。
因此,如果您的示例中的42
不能是文字因为它是从其他地方传递给您的,那么您可以使用括号表示法:
description
答案 1 :(得分:1)
_htaItems [x] [columnName] ='新值'; 还是我误解了你?
答案 2 :(得分:0)
您需要使用方括号表示法,就像您对数组索引所做的那样:
_htaItems[i][columnName] = newValue;
答案 3 :(得分:0)
做_htaItems[i][columnName] = newValue;
。它会将columnName
中指定的属性更改为newValue
。