編輯:沖銷(N)(Underscore-)進行分類排列去除對象的屬性
我錄的用QuickTime的bug,爲您的觀賞樂趣。希望這可以幫助解決這個奇怪的問題。
https://www.dropbox.com/s/o72o1v1eqvrarb7/Weird%20Sorting%20Bug.mov?dl=0
更多的代碼的詳細信息,請參見:
https://www.pastebin.com/zUts9qmg
原題:
我有一個奇怪的問題。我使用Meteor開發應用程序,其中一個依賴項是Underscore.js。方便的小工具,但我遇到了一個奇怪的問題(錯誤,也許?)。
對一個對象數組排序可以正常工作,但是對它進行排序不會。當反轉陣列時,數組內的對象的數據被刪除...
我創建了一個帶有粘性標題並動態添加表體的表。
點擊其中一列在表格的標題激發了一些代碼:
if (sortId != event.target.id) {
sortAsc = true;
sortId = event.target.id;
}
if (!sortAsc) {
requirements = _.sortBy(requirements, event.target.id).reverse();
} else {
requirements = _.sortBy(requirements, event.target.id);
}
sortAsc = !sortAsc;
CreateTable();
的sortId
是表示我們要作爲排序依據哪個鍵的字符串。爲了得到這個sortId
,我們看看event.target.id
,這是我們在表頭中點擊的項目的ID。 sortAsc
是一個布爾值,它將決定我們想要升序還是降序排序。 的requirements
是與所述數據陣列中的格式,如:
[
{
Status: "Something",
ID: 1,
Description: "Hahaha, yes!",
Category: "Category: Dairy",
segment: 1
},
{
//etc...
}
]
使用Underscore.js
,我與_.sortBy([collection], [property to sort by]);
對數組進行排序。這按預期工作。它使用提供的sortId
對數組中的所有對象進行排序。但是,在倒車時,它會刪除屬性在陣列中的所有對象,導致表中缺少一列,造型會失控:
正如你所看到的,在陣列反轉之後,對象的status
屬性消失。這適用於數組中的所有10個對象。
我試過基於硬編碼屬性進行排序,在_.sortBy
函數中使用「自定義」排序功能,但它們都具有相同的結果。即使顛倒標準的JavaScript排序.sort()
也會導致數據丟失。
有誰知道發生了什麼事?難道我做錯了什麼?
所有幫助非常感謝!
我不認爲問題是由'reverse'造成的。嘗試在'requirements = _.sortBy(requirements,event.target.id).reverse();'之前和之後放置'console.log(JSON.stringify(requirements [0]));'以驗證'reverse'是真正的原因。 –
結果:之前:「{」狀態「:」延遲「,」ID「:107,」描述「:」能夠根據Unify驗證客戶數據(以檢查客戶詳細信息是否允許使用外部地址或外部備份地址) ),「Category」:「C1-SELL」,「segment」:1}和after:「{」ID「:346,」Description「:」支持客戶賬戶的能力,包括但不限於不限於:在POS「,」Category「:」C12-PAY「,」segment「:1}'接收客戶付款。 http://imgur.com/a/xgwKO –
@Magicbjørn這顯然是一個不同的對象,從一個不同的位置。很可能在排序/反轉之前它沒有'.Status'。 – Bergi