Я хотел бы отметить следующее сходство с этой должностью: Dynamic deep setting for a JavaScript objectWalk и установить значение сложного объект Javascript
Однако вышеуказанный пост основан на известную структуру и глубину до объектов JavaScript и не по-настоящему динамичный. Поистине динамичный предполагает, что у вас не было никаких предварительных знаний о структуре, просто путь и значение, чтобы заменить его. Я создал довольно хороший случай использования более на JSFiddle здесь:
http://jsfiddle.net/kstubs/nJrLp/1/
function Message(message) {
$('result').insert('<div>' + message + '</div>');
}
var obj = {
"array": [1, 2, 3],
"boolean": true,
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d",
"e": "f",
"complex_array1": [{
"g": "h"
}, {
"bingo": "bongo"
}, {
"x": {
"complex_array2": [{
"h": "i"
}, {
"j": "k"
}, {
"bingo": "bongo"
}, {
"bango": "jango"
}]
}
}]
},
"string": "Hello World"
};
var list = [{
"h": "i"
}, {
"j": "k"
}];
function walk(path,value) {
var a = path.split('.');
var context = obj;
for (i = 0; i < a.size(); i++) {
context = context[a[i]];
}
}
Прецедент:
- Поиск complex_array2
- Обновить список его к новый список (новый массив)
Новый массив - это список массивов, который должен заменить список для complex_array2. Функция javascript walk делает именно это, просматривает объект javascript до тех пор, пока не будет удовлетворен критерий пути, а затем задает значение любому независимому значению, передаваемому функции walk, однако новое значение не вставлено.
Я знаю, почему он не придерживается, потому что, когда вы проходите объект типа массива, вы теряете указатель на исходный объект. Таким образом, задача состоит в том, чтобы прошел объект javascript и не потерял контекст исходного объекта.
Спасибо за любую помощь.
Karl ..
Итак ... в чем вопрос? Вам это действительно нужно, или вы просто хотите бросить вызов пользователям SO? Что вы пробовали? –
var context = obj, old = obj; ... old [a [i]] = "whatever" – dandavis
Это может представлять интерес - один из моих собственных ответов на немного другой вкус вопроса - http://stackoverflow.com/questions/12163160/searching- json-object-key-contains-value-then-unset-it/12170015 # 12170015 – Pebbl