Ste*_*eve 11 javascript arrays sorting typescript angular
我从一个从json端点获取数据的解析器获得了一个"产品"数组.
ngOnInit() {
this.products = this._route.snapshot.data.products;
console.log('products: ', this.products);
}
Run Code Online (Sandbox Code Playgroud)
其中一个对象中的一个对象是格式
{
"id": 3645,
"date": "2018-07-05T13:13:37",
"date_gmt": "2018-07-05T13:13:37",
"guid": {
"rendered": ""
},
"modified": "2018-07-05T13:13:37",
"modified_gmt": "2018-07-05T13:13:37",
"slug": "vpwin",
"status": "publish",
"type": "matrix",
"link": "",
"title": {
"rendered": "VPWIN"
},
"content": {
"rendered": "",
"protected": false
},
"featured_media": 0,
"parent": 0,
"template": "",
"better_featured_image": null,
"acf": {
"domain": "SMB",
"ds_rating": "3",
"dt_rating": ""
},
...
},
Run Code Online (Sandbox Code Playgroud)
我想要做的是按字段对此数组进行排序 title.rendered
在古代,在AngularJS中,我只是orderBy
在模板集中使用一个管道到这个字段.显然,这在Angular中已被删除,而且在进行研究时,似乎首选方法是对数据本身进行排序,例如ngOnInit
.
但我无法弄清楚如何排序products
的producs.title.rendered
.
amr*_*ngh 32
你可以简单地使用 Arrays.sort()
array.sort((a,b) => a.title.rendered.localeCompare(b.title.rendered));
Run Code Online (Sandbox Code Playgroud)
工作实例:
var array = [{"id":3645,"date":"2018-07-05T13:13:37","date_gmt":"2018-07-05T13:13:37","guid":{"rendered":""},"modified":"2018-07-05T13:13:37","modified_gmt":"2018-07-05T13:13:37","slug":"vpwin","status":"publish","type":"matrix","link":"","title":{"rendered":"VPWIN"},"content":{"rendered":"","protected":false},"featured_media":0,"parent":0,"template":"","better_featured_image":null,"acf":{"domain":"SMB","ds_rating":"3","dt_rating":""},},{"id":3645,"date":"2018-07-05T13:13:37","date_gmt":"2018-07-05T13:13:37","guid":{"rendered":""},"modified":"2018-07-05T13:13:37","modified_gmt":"2018-07-05T13:13:37","slug":"vpwin","status":"publish","type":"matrix","link":"","title":{"rendered":"adfPWIN"},"content":{"rendered":"","protected":false},"featured_media":0,"parent":0,"template":"","better_featured_image":null,"acf":{"domain":"SMB","ds_rating":"3","dt_rating":""}},{"id":3645,"date":"2018-07-05T13:13:37","date_gmt":"2018-07-05T13:13:37","guid":{"rendered":""},"modified":"2018-07-05T13:13:37","modified_gmt":"2018-07-05T13:13:37","slug":"vpwin","status":"publish","type":"matrix","link":"","title":{"rendered":"bbfPWIN"},"content":{"rendered":"","protected":false},"featured_media":0,"parent":0,"template":"","better_featured_image":null,"acf":{"domain":"SMB","ds_rating":"3","dt_rating":""}}];
array.sort((a,b) => a.title.rendered.localeCompare(b.title.rendered));
console.log(array);
Run Code Online (Sandbox Code Playgroud)
尝试这个
products.sort(function (a, b) {
return a.title.rendered - b.title.rendered;
});
Run Code Online (Sandbox Code Playgroud)
要么
您可以导入lodash / underscore库,它具有许多可用于操作,过滤,对数组进行排序的构建函数。
使用下划线:(下面仅是一个示例)
import * as _ from 'underscore';
let sortedArray = _.sortBy(array, 'title');
Run Code Online (Sandbox Code Playgroud)
未经测试但应该可以工作
products.sort((a,b)=>a.title.rendered > b.title.rendered)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
49181 次 |
最近记录: |