Авто добавление элементов в массив js
Доброй ночи, есть массив и есть переменная в которой значения меняется динамически, как сделать так чтобы значения переменной передавались в массив и сохранялись как элементы массива? Пытался через push но предыдущие значения переменно в массиве не остаются, а только текущее значение, например var fruits = ["Яблоко", "Апельсин"];
var t = "манго"; fruits.push(t); Если t изменится то и в массиве предыдущие значения не останутся, как сделать чтобы все значения переменной сохранялись? Заранее спасибо |
Цитата:
Такое может быть, если в массив заносятся объекты var fruits = [{name:"Яблоко"}, {name:"Апельсин"}]; var t = {name:"манго"}; fruits.push(t); t.name="лимон" // frutis[2].name === 'лимон' |
А как сделать чтобы все значения переменной добавлялись в массив ?
|
Вы должны добавлять значения в массив там, где эта ваша переменная изменяется. Остальные варианты - говнокод.
В можете, если переменная глобальная, поставить вместо неё геттер с сеттером, но это имеет смысл только в каких-нить в юзерскриптах. <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> |
Амай,
что изменяет t, то пусть и обновляет массив. задача не локализована. |
рони, я это первой строкой написал.
Но возможность то есть.) |
Aetae,
:yes: |
Спасибо
|
Часовой пояс GMT +3, время: 03:21. |