[英]Customized sort in Typescript
Say I have array 说我有数组
products= [{
"Name":'xyz',
'ID': 1
},
{
"Name":'abc',
'ID': 5
},
{
"Name":'def',
'ID': 3
}
]
sortOrder=[3,1,5]
if I do, 如果我做,
sortOrder.forEach((item) => {
products.sort((productA) => {
if (productA.ID=== item) { return 1; } else { return -1; }
});
});
It's not sorting as per order specified in sortOrder. 它不是按照sortOrder中指定的顺序排序。 I want to to sort products array based sortOrder mentioned in sortOrder array.
我想对sortOrder数组中提到的基于产品数组的sortOrder进行排序。 so, output of above should be ,
{ "Name":'def', 'ID': 3 },{ "Name":'xyz', 'ID': 1 },{ "Name":'abc', 'ID': 5 }
因此,上述输出应为
{ "Name":'def', 'ID': 3 },{ "Name":'xyz', 'ID': 1 },{ "Name":'abc', 'ID': 5 }
Any suggestion? 有什么建议吗?
Updated the answer to account for duplicate values in products list. 更新了答案以说明产品列表中的重复值。
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
name = 'Angular';
products= [{
"Name":'xyz',
'ID': 1
},
{
"Name":'abc',
'ID': 5
},
{
"Name":'def',
'ID': 3
},{
"Name":'xyz',
'ID': 1
},
{
"Name":'abc',
'ID': 5
},
{
"Name":'def',
'ID': 3
},
{
"Name":'def',
'ID': 3
},
{
"Name":'def',
'ID': 3
}
]
sortOrder=[3,1,5];
sortProducts(){
var tempSortedProducts :any[]=[];
for(let idx=0; idx<this.sortOrder.length; idx++){
this.products.forEach((product)=>{
if(product.ID===this.sortOrder[idx]){
tempSortedProducts.push(product)
}
})
}
this.products = tempSortedProducts;
}
}
Stackbliz link: Custom Sort Stackbliz链接: 自定义排序
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.