I am attaching output how i need我有下面的对象列表,
const list = [{
"ID": "3",
"Status": "NEW"
},
{
"ID": "1",
"Status": "Open",
},
{
"ID": "9",
"Status": "NEW",
},
{
"ID": "5",
"Status": "NEW",
},
{
"ID": "0",
"Status": "Closed",
},
{
"ID": "6",
"Status": "Closed",
}];
我想按状态..根据下拉选择进行排序。下拉数组包含[新建,关闭,打开]。如果我选择“新建”,则“状态”为“新建”应位于列表的顶部,对于“打开”也是如此。
我尝试了列表排序,如下所示,其给出的升序和降序不是我想要的。
list.sort(
function(a, b) {
return a.Status < b.Status ? -1 : a.Status > b.Status ? 1 : 0;
});
请提出建议,如何传递属性值。 预先谢谢你。
答案 0 :(得分:0)
您可能正在寻找
const order = ["NEW", "Closed", "Open"];
list.sort(function(a, b) {
return order.indexOf(a.Status) - order.indexOf(b.Status);
});
(这仅在所有.Status
值都出现在order
数组中的前提下起作用)
答案 1 :(得分:0)
也许您可以使用过滤器来显示所有包含NEW或Open的列表值
const list = [{
"ID": "3",
"Status": "NEW"
},
{
"ID": "1",
"Status": "Open",
},
{
"ID": "9",
"Status": "NEW",
},
{
"ID": "5",
"Status": "NEW",
},
{
"ID": "0",
"Status": "Closed",
},
{
"ID": "6",
"Status": "Closed",
}];
const ans = list.filter(e => e.Status === 'NEW');
console.log(ans);