【发布时间】:2018-08-15 18:37:42
【问题描述】:
我有一个包含一些预定义数据的数组
var data = [
{amount:20, speed:100},
{amount:40, speed:50}
];
然后我将数据添加到上面的数组中
function addMore() {
data = appendObjTo(data, {amount: 1500,speed:100});
}
function appendObjTo(thatArray, newObj) {
const frozenObj = Object.freeze(newObj);
return Object.freeze(thatArray.concat(frozenObj));
}
数据添加正常,但由于某种原因,我无法更改新数据的值
function runData() {
perSec = 0;
$.each(data, function( key, value ) {
perSecCalc = Math.round(value.speed/60);
perSec += perSecCalc;
// Below line works only for predefined objects, but not objects from "addMore()"
data[key].amount = value.amount-perSec;
});
setTimeout(function() {
runData();
},1000);
}
虽然“var data”中的预定义对象正在更改,但“addMore”中动态添加的数据不会更改。
为什么新数据没有变化?
更新: 看到这个fiddle
【问题讨论】:
-
你能显示 appendObjTo 代码吗?
-
你只给
addMore打过一次电话? -
是的,在这个测试示例中我是,但最终只要有新数据出现就会调用它
-
你为什么用
freeze?
标签: javascript jquery arrays jsobject