在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
}
},
建议赋值的时候可以先解构一下
百度一下 深浅拷贝