js数组sort排序
发布于 6 年前 作者 chaodeng 4630 次浏览 来自 问答

pxcs:function(){

        var that = this;

        var arr = new Array();

        arr = [[“中猫猫er”, “E7555大号”, “包背带”, “150”, “0.16”], [“卜要见、卜要贱”, “CA0913大”, “包背垫”, “333”, “0.18”]];

        arr.sort(function (x, y) {

        return x[1].localeCompare(y[1]);

        });

        

        that.setData({

        arr:arr

        })

        console.log(this.data.arr);

        console.log(that.data.arr)

},

pxcs2: function () {

        var that = this;

        console.log(this.data.arr)

        console.log(that.data.arr);

        var an_arr = that.data.arr

        

        //以下这个排序为什么 会影响that.data.arr

        an_arr.sort(function (x, y) {

        return x[3].localeCompare(y[3]);

        });

},

3 回复

对象赋值是相当于传地址,赋值后是同一个地址。

 var an_arr = that.data.arr

改为

 var an_arr = that.data.arr.concat()

 var an_arr = that.data.arr.slice()

 var an_arr = JSON.parse(JSON.stringify(that.data.arr))

这是代码逻辑问题,建议给个代码片段(  https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html  ),这样大家可以更容易帮助到你  

wechatide://minicode/aaJONpmF7pah    这是我的代码片段链接,以下是我的JS代码,wxml只有两个对应的按钮,谢谢各位!

//index.js

//获取应用实例

const app = getApp()

Page({

data: {

arr:[]

},

//事件处理函数

pxcs: function () {

var that = this;

console.log(that.data.arr)

var arr1 = new Array();

arr1 = [[“中猫猫er”, “E7555大号”, “包背带”, “150”, “0.16”], [“卜要见、卜要贱”, “CA0913大”, “包背垫”, “333”, “0.18”]];

arr1.sort(function (x, y) {

return x[1].localeCompare(y[1]);

});

that.setData({

arr: arr1

})

console.log(this.data.arr);

console.log(that.data.arr)

},

pxcs2: function () {

var that = this;

console.log(‘请注意arr数组的排列顺序,被莫名发生了变化’)

console.log(this.data.arr)

console.log(that.data.arr);

var an_arr = that.data.arr

//以下这个排序为什么 会影响that.data.arr

an_arr.sort(function (x, y) {

return x[3].localeCompare(y[3]);

});

},

})

回到顶部