У вас есть массив объектов в массиве. Массив не имеет никакого метода индексирования, который дает вам прямой поиск, как вы просили;
myArr['user'].value = 'bob';
Чтобы получить, что вам нужно будет перестроить свои данные так, чтобы у вас был объект, где имя было основным ключом и внутри этого ключа был другой объект с остальными данными для этого пользователя, как это:
var myData = {
"start": {value: 1},
"end": {value: 15},
"user": {value: Bert}
};
, вы сразу могли получить доступ по имени, как в:
myData['user'].value = 'bob;
Если вы хотите s тик с существующей структурой данных, то самое простое, что я могу думать о том, чтобы сделать простую функцию, которая находит правильный объект:
function findUser(data, nameToFind) {
var item;
for (var i = 0; i < myArr.length; i++) {
item = nameToFind[i];
if (item.name === nameToFind) {
return item;
}
}
}
var myArr = [{"name":"start","value":1},{"name":"end","value":15},{"name":"counter","value":"6"},{"name":"user","value":"Bert"}]
Тогда вы могли бы сделать что-то вроде этого:
findUser(myArr, "user").value = "bob";
Это предполагает, что вы ищете только данные, находящиеся в массиве, потому что иначе это создаст ошибку, если вы не добавите к ней проверку ошибок.
Если вы только действительно хотите, чтобы превратить все это в функцию, которая находит и меняет имя, это может быть так:
function changeUser(data, nameToFind, newName) {
var item;
for (var i = 0; i < myArr.length; i++) {
item = nameToFind[i];
if (item.name === nameToFind) {
item.name = newName;
return;
}
}
}
Если вы выполняете программирование на стороне сервера, вы можете преобразовать его в массив типа JSON/GSON и затем перебрать его, чтобы получить KVP. –
@BlueChippy Если возможно, то я рекомендую вам изменить структуру json на что-то вроде этого: '{" start ": 1", end ": 15," counter ": 6," user ":" Bert "}' – bits