收藏
回答

setData设置数组,怎么做性能最好?

场景:假设有一个数组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
  })
})
最后一次编辑于  2021-04-12
回答关注问题邀请回答
收藏

3 个回答

  • 神经蛙
    神经蛙
    2021-04-12

    第一种

    2021-04-12
    有用 1
    回复
  • 莉莉娅
    莉莉娅
    2021-04-12

    循环数据覆盖arr性能会更优。

    因为数据在处理好之后统一设置。

    第二种是循环了无数次的setData。

    明明设置一次setData就可以,但是你设置了无数次,这样很容易页面崩溃

    2021-04-12
    有用 1
    回复 8
    • Archer
      Archer
      2021-04-12
      有道理。不过这让我又想到一个问题:同一个函数中,多次setData,setData会合并吗?
      2021-04-12
      回复
    • yaime
      yaime
      2021-04-12回复Archer
      不会,他们的api只取决于你调用了多少次
      2021-04-12
      1
      回复
    • Archer
      Archer
      2021-04-12回复yaime
      额,好吧。不过我又想到了一个方案:
      2021-04-12
      回复
    • 莉莉娅
      莉莉娅
      2021-04-12回复Archer
      可obj不也是循环了吗。和第一种换汤不换药呀
      第二种是循环set  这一种是在set里面进行循环。和第一种一样呀
      2021-04-12
      回复
    • yaime
      yaime
      2021-04-12回复Archer
      看和第一种解决方案没有本质上的区别吧~差距应该不大但是第一种的可读性明显要比这个好呀~
      2021-04-12
      回复
    查看更多(3)
  • 拾忆
    拾忆
    2021-04-12

    第一种

    2021-04-12
    有用
    回复
登录 后发表内容
问题标签