收藏
回答

data里面值相同的两个数组,修改其中一个,另一个的值也会跟着变化?

在data里定义了2个名字不同的空数组,请求服务器后把相同的数据分别都给了这俩数组,因为后续要操作排序,所以打算留一个初始值后面可以继续用就不用再调一次服务器,但是发现改了第一个数组的排序,第二个也会一起跟着改,大佬们能帮忙解答下吗

    data: {
        shopList: [],    // 商品信息
        shopListInit: [],   // 商品信息(初始化的数据,没有排序)
        index: 1,    // 页码数
        isSelect: true,  // 筛选栏判断选中内容,true为综合,false为价格
        isPrice: true,   // 筛选价格栏判断是否为升序还是降序,true为升序,false为降序
    },

      onLoad(options) {
        this.getShopList()
    },


    // 获取商品数据
    async getShopList() {
        let { shopList,shopListInit, index } = this.data
        let shopListData = await request('/goods/search', { pagenum: index })
        shopList = shopListData.message.goods
        shopListInit = shopListData.message.goods
        this.setData({
            shopList,
            shopListInit
        })
    },

      // 点击筛选栏
    handleSelect(e) {
        let { shopList,shopListInit, index } = this.data
        let type = e.currentTarget.id
        // 点击综合,将保留初始数据的shopListInit数组重新付给遍历数组
        if (type == 'synthesize') {
            this.setData({
                isSelect: true,
                shopList: shopListInit
            })
        // 点击价格
        } else {
            // 改变isPrice,价格栏升降序变化
            this.setData({
                isPrice: !this.data.isPrice
            })
            if (this.data.isPrice) {
                this.setData({
                    // 调用升序函数,改变shopList数组内容排序并重新赋值
                    shopList: shopList.sort(this.ascend("goods_price"))
                })
            } else {
                this.setData({
                    // 调用降序函数,改变shopList数组内容排序并重新
                    shopList: shopList.sort(this.descend("goods_price"))
                })
            }
            // 选中为价格栏
            this.setData({
                isSelect: false
            })
        }
        this.type = type
    },


    // 商品价格升序
    ascend(property) {
        return (a, b) => {
            let price1 = a[property]
            let price2 = b[property]
            return price1 - price2
        }
    },


    // 商品价格降序
    descend(property) {
        return (a, b) => {
            let price1 = a[property]
            let price2 = b[property]
            return price2 - price1
        }
    },


最后一次编辑于  2022-11-10
回答关注问题邀请回答
收藏

2 个回答

  • 微盟
    微盟
    2022-11-11

    建议赋值的时候可以先解构一下

    2022-11-11
    有用
    回复
  • ⅴ
    2022-11-10

    百度一下 深浅拷贝

    2022-11-10
    有用
    回复 1
    • Tao
      Tao
      发表于移动端
      2022-11-10
      多谢,已经明白并解决了
      2022-11-10
      1
      回复
登录 后发表内容