2

JavaScript には、次のコードがあります。

var rights = {
    'One': [ 1, 1, 0],
    'Two': [ 1, 0, 0],
    'Three': [ 0, 1, 1 ]
};

そして印刷:

for (item in rights) Response.Write(item + ' = ' + rights[item] + '<br />');

また、次の方法でオブジェクト内の任意の要素にアクセスできます。

rights['One'] or rights[0]

しかし、次のようになるようにインデックスを小文字にして、このオブジェクトを反復処理するにはどうすればよいですか。

var rights = {
    'one': [ 1, 1, 0],
    'two': [ 1, 0, 0],
    'three': [ 0, 1, 1 ]
};
4

3 に答える 3

5

キーを直接変更することはできません。キーとその値を取得し、小文字のキー値で新しいキーを設定してから、元のキーを削除できます。

var rights = {
    'One': [ 1, 1, 0],
    'Two': [ 1, 0, 0],
    'Three': [ 0, 1, 1 ]
};

for (var key in rights) {
    var keyLower = key.toLowerCase();
    // if key is not already lower case
    if (keyLower !== key) {
        var temp = rights[key];
        delete rights[key];
        rights[keyLower] = temp;
    }
}

// all keys in the rights object will now be lowercase

実際のデモ: http://jsfiddle.net/jfriend00/U9vFQ/

于 2013-03-22T06:27:43.533 に答える
0
var fieldNames = [];
for (item in rights) { fieldNames.push(item); }
for(i = 0; i < fieldNames.length; i++) {
    var fieldName = fieldNames[i];
    var value = rights[fieldName];
    delete rights[fieldName];

    rights[fieldName.toLowerCase()] = value;    
}
于 2013-03-22T06:27:00.017 に答える
0
for (var key in rights) {

key = key.toLowerCase();

}

ここにフィドルがあります:http://jsfiddle.net/btevfik/JBAXr/


これは実際にはキーを更新しません。小文字のキーを与えるだけです。

于 2013-03-22T06:19:47.463 に答える