Для теста написал следующий код
var num = ['num0', 'num1', 'num2'];
var sub_data = {
foo: 0,
bar: 5
};
var data = {
val : 0,
nums : {
num0 : sub_data,
num1 : sub_data,
num2 : sub_data
}
};
var d = {
num0 : {
foo : 9,
bar : 1
},
num1 : {
foo : 8,
bar : 2
},
num2 : {
foo : 7,
bar : 3
}
}
console.log(JSON.stringify(data) + "\n");
data.nums[num[1]].bar = d[num[2]].bar;
console.log(JSON.stringify(data));
выполняю в nodejs получаю следующее :
korund@q:~/prog/prophet/test$ nodejs array_object.js
{"val":0,"nums":{"num0":{"foo":0,"bar":5},"num1":{"foo":0,"bar":5},"num2":{"foo":0,"bar":5}}}
{"val":0,"nums":{"num0":{"foo":0,"bar":3},"num1":{"foo":0,"bar":3},"num2":{"foo":0,"bar":3}}}
Тест в Firefox даёт тот же результат.
Почему меняются все свойства объекта(num0,num1 b num2), а не одно, на который указывает индекс (num1)?
Что я упустил, как сделать это правильно,с такой структурой данных ?