Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.06.2021, 23:05
Аватар для nastya97core
Аспирант
Отправить личное сообщение для nastya97core Посмотреть профиль Найти все сообщения от nastya97core
 
Регистрация: 04.04.2020
Сообщений: 60

Как задать ключ в массиве (объекте) в виде переменной?
Здравствуйте. Вот такая конструкция в 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';
Ответить с цитированием
  #2 (permalink)  
Старый 08.06.2021, 23:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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)
Ответить с цитированием
  #3 (permalink)  
Старый 09.06.2021, 00:35
Аватар для nastya97core
Аспирант
Отправить личное сообщение для nastya97core Посмотреть профиль Найти все сообщения от nastya97core
 
Регистрация: 04.04.2020
Сообщений: 60

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

Если записать в первый Input текст, а затем во второй, то сохранится только внутренний ключ bella, а sara - нет
Ответить с цитированием
  #4 (permalink)  
Старый 09.06.2021, 00:37
Аватар для nastya97core
Аспирант
Отправить личное сообщение для nastya97core Посмотреть профиль Найти все сообщения от nastya97core
 
Регистрация: 04.04.2020
Сообщений: 60

я дура. не смотрим
Ответить с цитированием
  #5 (permalink)  
Старый 09.06.2021, 00:39
Аватар для nastya97core
Аспирант
Отправить личное сообщение для nastya97core Посмотреть профиль Найти все сообщения от nastya97core
 
Регистрация: 04.04.2020
Сообщений: 60

просто я параллельно задала вопрос на другом форуме в надежде, что "кто-нибудь да не будет спать". Там ответили также за исключением вот этой вот штуки || obj[id]. А я внимание на неё не обратила и тупо скопировала ответ оттуда - сюда
Ответить с цитированием
  #6 (permalink)  
Старый 09.06.2021, 00:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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>
Ответить с цитированием
  #7 (permalink)  
Старый 09.06.2021, 01:03
Аватар для nastya97core
Аспирант
Отправить личное сообщение для nastya97core Посмотреть профиль Найти все сообщения от nastya97core
 
Регистрация: 04.04.2020
Сообщений: 60

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

Но вам спасибо!!!
Ответить с цитированием
  #8 (permalink)  
Старый 09.06.2021, 20:57
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от nastya97core
почему мне никто не предложил этот вариант?
Глуп, ваше сиятельство. (с) М. Жванецкий
http://odesskiy.com/zhvanetskiy-tom-...o-i-narod.html
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как через JS задать ширину родителя как у ребенка? ethereal Элементы интерфейса 6 13.01.2020 11:05
Передать файл через API FILE в виде dataurL и принять на сервере. Как? platedz AJAX и COMET 22 04.06.2013 13:29
Как получить значение php переменной sanyalex AJAX и COMET 1 30.10.2011 22:45
Как правильно задать ID в создаваемом элементе ? Indiana Events/DOM/Window 15 31.10.2010 16:15
Как найти индекс по элементу в двумерном массиве? bayah Общие вопросы Javascript 5 22.04.2010 16:26