new*_*849 3 javascript underscore.js angularjs
我有一个对象数组,它们有一个名为'CODE'的属性.
[
{
ID: 168,
NAME: "First name",
CODE: "AD"
},
{
ID: 167,
NAME: "Second name",
CODE: "CC"
},
{
ID: 169,
NAME: "Third name",
CODE: "CCM"
},
{
ID: 170,
NAME: "Fourth name",
CODE: "CR"
},
]
Run Code Online (Sandbox Code Playgroud)
如何通过自定义订单订购阵列,例如:
var item_order = ["CCM","CR","AD","CC"];
Run Code Online (Sandbox Code Playgroud)
一直尝试各种方法没有成功.请帮忙.
您可以将该功能sort与功能一起使用indexOf.
var array = [ { ID: 168, NAME: "First name", CODE: "AD" }, { ID: 167, NAME: "Second name", CODE: "CC" }, { ID: 169, NAME: "Third name", CODE: "CCM" }, { ID: 170, NAME: "Fourth name", CODE: "CR" }],
item_order = ["CCM","CR","AD","CC"];
array.sort((a, b) => item_order.indexOf(a.CODE) - item_order.indexOf(b.CODE));
console.log(array);Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }Run Code Online (Sandbox Code Playgroud)
对于巨大的数组,我建议使用一个对象作为索引。
var array = [{ ID: 168, NAME: "First name", CODE: "AD" }, { ID: 167, NAME: "Second name", CODE: "CC" }, { ID: 169, NAME: "Third name", CODE: "CCM" }, { ID: 170, NAME: "Fourth name", CODE: "CR" }],
item_order = ["CCM", "CR", "AD", "CC"],
order = item_order.reduce((r, k, v) => Object.assign(r, { [k]: v }), {});
array.sort((a, b) => order[a.CODE] - order[b.CODE]);
console.log(array);Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
907 次 |
| 最近记录: |