Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Авто добавление элементов в массив js (https://javascript.ru/forum/misc/79622-avto-dobavlenie-ehlementov-v-massiv-js.html)

Амай 29.02.2020 20:38

Авто добавление элементов в массив js
 
Доброй ночи, есть массив и есть переменная в которой значения меняется динамически, как сделать так чтобы значения переменной передавались в массив и сохранялись как элементы массива? Пытался через push но предыдущие значения переменно в массиве не остаются, а только текущее значение, например var fruits = ["Яблоко", "Апельсин"];
var t = "манго"; fruits.push(t); Если t изменится то и в массиве предыдущие значения не останутся, как сделать чтобы все значения переменной сохранялись? Заранее спасибо

voraa 29.02.2020 20:56

Цитата:

Сообщение от Амай (Сообщение 520796)
например var fruits = ["Яблоко", "Апельсин"];
var t = "манго"; fruits.push(t);

Вот для данного случая быть такого не может.
Такое может быть, если в массив заносятся объекты

var fruits = [{name:"Яблоко"}, {name:"Апельсин"}]; 
var t = {name:"манго"};  
fruits.push(t); 
t.name="лимон"  // frutis[2].name === 'лимон'

Амай 29.02.2020 21:09

А как сделать чтобы все значения переменной добавлялись в массив ?

Aetae 29.02.2020 21:24

Вы должны добавлять значения в массив там, где эта ваша переменная изменяется. Остальные варианты - говнокод.

В можете, если переменная глобальная, поставить вместо неё геттер с сеттером, но это имеет смысл только в каких-нить в юзерскриптах.
<script>
function watchGlobalVariable(name, array = []) {
  var value
  
  Object.defineProperty(window, name, {
  	get(){
    	return value;
    },
    set(newValue) {
    	array.push(value = newValue);
    },
    enumerable: true,
    configurable: true
  })

  return array;
}
var fruits = ["Яблоко", "Апельсин"]; 
watchGlobalVariable('t', fruits);
</script>

<script>
var t = "манго";

t='банан';
t='кокос';
t='груша';

document.write(fruits)
</script>

рони 29.02.2020 21:25

Амай,
что изменяет t, то пусть и обновляет массив. задача не локализована.

Aetae 29.02.2020 21:43

рони, я это первой строкой написал.
Но возможность то есть.)

рони 29.02.2020 21:49

Aetae,
:yes:

Амай 29.02.2020 21:57

Спасибо


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