Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как задать ключ в массиве (объекте) в виде переменной? (https://javascript.ru/forum/misc/82666-kak-zadat-klyuch-v-massive-obekte-v-vide-peremennojj.html)

nastya97core 08.06.2021 23:05

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

рони 08.06.2021 23:13

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)

nastya97core 09.06.2021 00:35

неа...
https://jsfiddle.net/kovqxrja/

Если записать в первый Input текст, а затем во второй, то сохранится только внутренний ключ bella, а sara - нет

nastya97core 09.06.2021 00:37

я дура. не смотрим

nastya97core 09.06.2021 00:39

просто я параллельно задала вопрос на другом форуме в надежде, что "кто-нибудь да не будет спать". Там ответили также за исключением вот этой вот штуки || obj[id]. А я внимание на неё не обратила и тупо скопировала ответ оттуда - сюда

рони 09.06.2021 00:44

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>

nastya97core 09.06.2021 01:03

рони,
да! да! и ещё раз да!
Сейчас точно такой же кусок кода я себе сделала. А теперь если вернуться к моему вопросу: https://javascript.ru/forum/misc/826...zmeneniya.html то почему мне никто не предложил этот вариант? Он же капец какой простой, только вместо input нужно писать change. Я вот сейчас сделала у себя так и всё блин работает.

Но вам спасибо!!!

ksa 09.06.2021 20:57

Цитата:

Сообщение от nastya97core
почему мне никто не предложил этот вариант?

Глуп, ваше сиятельство. (с) М. Жванецкий :cray:
http://odesskiy.com/zhvanetskiy-tom-...o-i-narod.html


Часовой пояс GMT +3, время: 16:12.