我对Angular很新,所以也许我只是在寻找错误的东西,但我似乎无法在任何地方找到一个简单的答案。
假设我有一个对象数组:
[
{Label: "UDP 128B Flood", ...},
{Label: "UDP 512B Flood", ...},
{Label: "UPD 1514B Flood",...},
{Label: "HTTP Excessive GET",...}
]
这个数组显示为下拉列表中的选项:
<option *ngFor="let profile of Profiles" [value]="profile.Label">{{profile.Label}}</option>
我想对这些对象进行排序,以确保它们以字母数字顺序显示。
答案 0 :(得分:1)
let sorted = [
{Label: "UDP 128B Flood"},
{Label: "UDP 512B Flood"},
{Label: "UDP 1514B Flood"},
{Label: "HTTP Excessive GET"}
].sort((a, b) => a.Label.localeCompare(b.Label));
console.log(sorted);
&#13;
答案 1 :(得分:0)
Javascript : natural sort of alphanumerical strings
从这个帖子中找到答案。
profiles.sort((as, bs) => {
var a: any, b: any, a1: number, b1: number, i= 0, n: number , L,
rx=/(\.\d+)|(\d+(\.\d+)?)|([^\d.]+)|(\.\D+)|(\.$)/g;
if(as.Label=== bs.Label) return 0;
a= as.Label.toLowerCase().match(rx);
b= bs.Label.toLowerCase().match(rx);
L= a.length;
while(i<L){
if(!b[i]) return 1;
a1= a[i],
b1= b[i++];
if(a1!== b1){
n= a1-b1;
if(!isNaN(n)) return n;
return a1>b1? 1:-1;
}
}
return b[i]? -1:0;
});
答案 2 :(得分:0)
尝试一下,希望对您有所帮助。
var array=[
{Label: "UDP 128B Flood", ...},
{Label: "UDP 512B Flood", ...},
{Label: "UPD 1514B Flood",...},
{Label: "HTTP Excessive GET",...}
]
array.sort(this.sortArray);
sortArray(){ if(b.Label.toString().toLowerCase() <a.Label.toString().toLowerCase()) { return -1; }
if(b.Label.toString().toLowerCase() >a.Label.toString().toLowerCase()) { return 1; } }