我写了一个函数:
getClassTable () {
var classNormalData = this.classData.normal,
alterClasses = this.classData.alter.classes,
classTable = [];
for(var day in classNormalData) {
classTable.push(classNormalData[day]);
}
if(alterClasses != []) {
alterClasses.forEach(function(item, index) {
var date = item.time,
lesson = item.lesson;
for(var i = 0; i < 4; i++){
var time = this.dates[i],
classes = classTable[i][lesson];
if(time == date) {
classes.subject = item.subject;
break;
}
}
}, this)
}
this.classTable = classTable;
}
}
但是当classes.subject = item.subject
有效时,有些事情出错了。它似乎直接改变了this.classData
。变量classNormalData
classTable
没有&#39;工作得很好。
为什么呢?
Ps:this.classData
在这里定义
computed: {
classData () {
return this.$localStorage.get('classList');
},
}
答案 0 :(得分:0)
在javascript中,变量作为对象的指针。分配给变量时,不会修改任何对象,只是将变量重新分配给不同的对象。所以如果修改指定的对象,原始对象也会改变。
要解决此问题,您必须创建一个克隆原始对象的新对象。 有多种方法可以做到这一点,正如你在评论中指出的那样:
var newObj = Object.assign({}, obj)
有更好,更有效的方法,例如使用Object.assign:
from io import BytesIO
def predict(image, labels, sess):
imageBuf = BytesIO()
image.save(imageBuf, format="JPEG")
image = imageBuf.getvalue()
softmax_tensor = sess.graph.get_tensor_by_name('final_result:0')
predictions = sess.run(softmax_tensor,
{'DecodeJpeg/contents:0': image})
predictions = np.squeeze(predictions)
top_k = predictions.argsort()[-5:][::-1] # Getting top 5 predictions
return predictions[top_k[0]], labels[top_k[0]] # Return the raw value of tag matching and the matching tag.
underscore和lodash也提供了克隆方法。
您可以在其他解决方案中看到此answer。