开发者

Access JSON or JS property using string

I have a JSON array like this:

_htaItems = [
    {"ID":1,
     "parentColumnSortID":"0",
     "description":"Precondition",
     "columnSortID":"1",
     "itemType":0},
    {"ID":2,
     "parentColumnSortID":"0",
     "description":"Precondition",
     "columnSortID":"1开发者_运维知识库",
    "itemType":0}]

I want to update this by passing the ID, column name and new value to a function:

    function updateJSON(ID, columnName, newValue)
    {
        var i = 0;
        for (i = 0; i < _htaItems.length; i++)
        {
            if (_htaItems[i].ID == ID)
            {
                ?????
            }
        }
    }  

My question is, how do I update the value? I know I can do something like the following:

 _htaItems[x].description = 'New Value'

But in my cause, the column name is being passed as a string.


In JavaScript, you can access an object property either with literal notation:

the.answer = 42;

Or with bracketed notation using a string for the property name:

the["answer"] = 42;

Those two statements do exactly the same thing, but in the case of the second one, since what goes in the brackets is a string, it can be any expression that resolves to a string (or can be coerced to one). So all of these do the same thing:

x = "answer";
the[x] = 42;

x = "ans";
y = "wer";
the[x + y] = 42;

function foo() {
    return "answer";
}
the[foo()] = 42;

...which is to set the answer property of the object the to 42.

So if description in your example can't be a literal because it's being passed to you from somewhere else, you can use bracketed notation:

s = "description";
_htaItems[x][s] = 'New Value';


_htaItems[x][columnName] = 'New Value'; Or did I misunderstand you?


Just do _htaItems[i][columnName] = newValue;. It will change the property specified in columnName to newValue.


You need to use square bracket notation, just like you did for array index:

_htaItems[i][columnName] = newValue;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜