色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

vue sort排序無效

錢諍諍1年前9瀏覽0評論

最近在項目中使用vue遇到了一個問題,就是在使用vue sort排序時發現無效,一直無法實現按照指定的順序進行排序。

在排查問題的過程中,我發現了幾個可能導致vue sort排序無效的原因。

1. 對原數組的修改不會影響到Vue實例中的數據,從而無法觸發數據的響應式更新。解決方法是使用Vue.set或者splice方法對數組進行修改。
2. sort方法是基于現有數組進行排序的,所以如果要實現按照指定順序排序,需要先將指定順序中的key值按照需要的順序排列并存儲,然后在sort中以該數組的順序進行排序操作。
3. sort方法是基于引用實現的,所以如果指定的順序數組是引用類型,需要先將其復制一份再進行操作。

其中最常見的就是第一種情況,對數組進行修改時需要使用Vue提供的修改方法來觸發數據響應式更新。

// example 1: 
// 無法觸發數據響應式更新 
this.array.reverse(); 
// example 2: 
// 可以觸發數據響應式更新 
this.array.splice(0, this.array.length, ...this.array.reverse()); 
// 或者 
Vue.set(this, 'array', this.array.reverse());

而針對第二種情況,為了能夠實現按照指定順序排序,需要先將指定順序中的key值按照需要的順序排列并存儲。比如,假設現在需要按照["c", "b", "a"]的順序對數據進行排序。

const order = ["c", "b", "a"]; 
array.sort((a,b) =>order.indexOf(a.key) - order.indexOf(b.key));

這樣就可以根據指定的key值進行排序了。

最后需要注意的是,如果指定的順序數組是引用類型,需要先將其復制一份再進行操作。否則,操作會直接修改原數組。

// example 1: 
// 操作會修改原數組 
const order = this.order; 
this.array.sort((a,b) =>order.indexOf(a.key) - order.indexOf(b.key)); 
// example 2: 
// 操作不會修改原數組 
const order = this.order.slice(); 
this.array.sort((a,b) =>order.indexOf(a.key) - order.indexOf(b.key));

綜上,如果在vue sort排序的時候遇到問題,需要思考以上幾個問題,解決掉之后才能順利實現按照指定順序排序。