Как задать ключ в массиве (объекте) в виде переменной?
Здравствуйте. Вот такая конструкция в PHP работает. Мне нужно тоже самое сделать на JS:
$id = 'АЙДИ'; $key1 = 'ВНУТРЕННИЙ КЛЮЧ 1'; $key2 = 'ВНУТРЕННИЙ КЛЮЧ 2'; $val1 = 'ЗНАЧЕНИЕ1'; $val2 = 'ЗНАЧЕНИЕ2'; $id2 = 'АЙДИ2'; $key3 = 'ВНУТРЕННИЙ КЛЮЧ 3'; $key4 = 'ВНУТРЕННИЙ КЛЮЧ 4'; $val3 = 'ЗНАЧЕНИЕ3'; $val4 = 'ЗНАЧЕНИЕ4'; $array = []; $array[$id][$key1] = $val1; $array[$id][$key2] = $val2; $array[$id2][$key3] = $val3; $array[$id2][$key4] = $val4; echo json_encode($array); ![]() Важно, чтобы можно было потом сделать вот так: $array[$id][$key1] = $val4; и данные переписались бы, а не создалась новая запись Вот исходный JS let id = 'АЙДИ'; let key1 = 'ВНУТРЕННИЙ КЛЮЧ 1'; let key2 = 'ВНУТРЕННИЙ КЛЮЧ 2'; let val1 = 'ЗНАЧЕНИЕ1'; let val2 = 'ЗНАЧЕНИЕ2'; let id2 = 'АЙДИ2'; let key3 = 'ВНУТРЕННИЙ КЛЮЧ 3'; let key4 = 'ВНУТРЕННИЙ КЛЮЧ 4'; let val3 = 'ЗНАЧЕНИЕ3'; let val4 = 'ЗНАЧЕНИЕ4'; |
nastya97core,
:-?
let id = 'АЙДИ';
let key1 = 'ВНУТРЕННИЙ КЛЮЧ 1';
let key2 = 'ВНУТРЕННИЙ КЛЮЧ 2';
let val1 = 'ЗНАЧЕНИЕ1';
let val2 = 'ЗНАЧЕНИЕ2';
let id2 = 'АЙДИ2';
let key3 = 'ВНУТРЕННИЙ КЛЮЧ 3';
let key4 = 'ВНУТРЕННИЙ КЛЮЧ 4';
let val3 = 'ЗНАЧЕНИЕ3';
let val4 = 'ЗНАЧЕНИЕ4';
let array = {};
array[id] = array[id] || {};
array[id][key1] = val4;
console.log(array)
|
неа...
https://jsfiddle.net/kovqxrja/ Если записать в первый Input текст, а затем во второй, то сохранится только внутренний ключ bella, а sara - нет |
я дура. не смотрим
|
просто я параллельно задала вопрос на другом форуме в надежде, что "кто-нибудь да не будет спать". Там ответили также за исключением вот этой вот штуки || obj[id]. А я внимание на неё не обратила и тупо скопировала ответ оттуда - сюда
|
nastya97core,
:-?
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<div id="mygroup">
<input type="text" name="sara">
<input type="text" name="bella">
</div>
<pre id="out"></pre>
<script>
let obj = {};
let items = document.querySelectorAll("input");
items.forEach(function(item) {
item.addEventListener('input', function() {
let myname = this.name;
let myvalue = this.value;
let id = this.parentNode.id;
obj[id] = obj[id] || {};
obj[id][myname] = myvalue;
out.innerHTML = JSON.stringify(obj);
});
});
</script>
</body>
</html>
|
рони,
да! да! и ещё раз да! Сейчас точно такой же кусок кода я себе сделала. А теперь если вернуться к моему вопросу: https://javascript.ru/forum/misc/826...zmeneniya.html то почему мне никто не предложил этот вариант? Он же капец какой простой, только вместо input нужно писать change. Я вот сейчас сделала у себя так и всё блин работает. Но вам спасибо!!! |
Цитата:
http://odesskiy.com/zhvanetskiy-tom-...o-i-narod.html |
| Часовой пояс GMT +3, время: 23:52. |