Заполняю объект определенным значениями, далее обращаюсь к определенному индексу в объекте и меняю ему значение, но меняется значения в индексе к которому обращаюсь и в последнем. Не могу понять в чем проблема?
var values = {};
for (var i = 0; i < 5; i++){
var mins = { 'min' : 0, 'max' : 0 }
mins.min = i;
mins.max = i;
values[i] = mins;
}
console.log(values);
mins.min = 10;
mins.max = 20;
values[2] = mins;
console.log(values);
// 0: {min: 0, max: 0}
// 1: {min: 1, max: 1}
// 2: {min: 10, max: 20}
// 3: {min: 3, max: 3}
// 4: {min: 10, max: 20}
После выполнения цикла переменная mins определена и ссылается на последний объект, затем вы в нем меняете значения и присваиваете этот же объект в массив по второму индексу.
Таким образом второй и пятый элементы массива ссылаются на один и тот же объект
Я бы сделал как-то так :
var values = {};
for (var i = 0; i < 5; i++) {
values[i] = {min : i, max : i };
}
console.log(values);
values[2] = { min : 0, max : 0 };
console.log(values);
PS: в выводе в консоль результата работы вашего снипета видно что в массиве содержатся ссылки на один и тот же объект
Теперь работает. Не стоит объявлять постоянно новый объект в цикле, объявите его один раз, перед началом цикла.
var values = {};
var mins = { 'min' : 0, 'max' : 0 }
for (var i = 0; i < 5; i++){
values[i] = {
'min': i,
'max': i
};
}
console.log(values);
mins.min = 10;
mins.max = 20;
values[2] = mins;
console.log(values);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня строка содержащая svg тег(не нода)Как мне её сохранить в base64? Данную строку формирует Maker
Вопрос по работе движка! Что хуже? Бесконечные таймеры или промисы? И почему? Такой вопрос задали на собеседованииКто может пояснить?
Существует множество готовых плагинов для создания слайдера-карусели на сайтеНе хочется изобретать велосипед, но ни разу не встречала реализация,...