场景:假设有一个数组arr,需要给arr中每个元素的flag属性设置为true。
问题:是先循环处理好数据,再覆盖arr的性能好呢?还是直接循环setData设置flag属性好?
// arr下的元素有很多很多的属性,这里只展示flag
let arr = [{flag: true},{flag: false}];
// 第一种方案
arr.forEach( item => {
item.flag = true
})
this.setData({
arr,
})
// 第二种方案
arr.forEach( (item, index) => {
this.setData({
["arr[" + index + "].flag"]: true
})
})
第一种
循环数据覆盖arr性能会更优。
因为数据在处理好之后统一设置。
第二种是循环了无数次的setData。
明明设置一次setData就可以,但是你设置了无数次,这样很容易页面崩溃
// 第三种方案
var obj = {};
arr.forEach( item => {
obj["arr[" + index + "].flag"]: true
})
// 性能和第一种相比,如何?
this.setData(obj);
第二种是循环set 这一种是在set里面进行循环。和第一种一样呀
第一种