Как задать ключ в массиве (объекте) в виде переменной?
Здравствуйте. Вот такая конструкция в 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, время: 16:12. |