我正在弄清楚是否有更好的方法來對下面的陣列進行排序。
下面的代碼根據標簽和 deviceRegistered 對陣列進行排序。如果 label 是 Desk phone 并且 deviceRegistered 是 true 那么它應該優先。
我的方法如下。
const terminals = [
{
"device":"JKJCF00",
"directory":" 1899990000",
"label":"Jabber",
"deviceRegistered":"false"
},
{
"device":"IOP8999",
"directory":"9099886644",
"label":"Desk Phone",
"deviceRegistered":"false"
},
{
"device":"KLJ7888",
"directory":" 8999999",
"label":"Jabber",
"deviceRegistered":"true"
},
{
"device":"VFD87987",
"directory":" 12386444",
"label":"Desk Phone",
"deviceRegistered":"true"
}]
let term = [...terminals],arr=[],sortedLines = [],lineObj ={};
term.forEach(line => arr.indexOf(line.label)===-1 ? arr.push(line.label):'');
arr.forEach(device => {
let filterArr = term.filter(line => line.label === device)
let sortArr = [...filterArr].sort((dev1,dev2) => dev1.deviceRegistered !== 'true' ? 1 : dev2.deviceRegistered !== 'true' ? -1 : 0)
lineObj[device] = sortArr
})
for (line in lineObj){ console.log(lineObj[line])
sortedLines.push(...lineObj[line])
}
}
輸出是
[
{
"device":"KLJ7888",
"directory":" 8999999",
"label":"Jabber",
"deviceRegistered":"true"
},
{
"device":"JKJCF00",
"directory":" 1899990000",
"label":"Jabber",
"deviceRegistered":"false"
},
{
"device":"VFD87987",
"directory":" 12386444",
"label":"Desk Phone",
"deviceRegistered":"true"
},
{
"device":"IOP8999",
"directory":"9099886644",
"label":"Desk Phone",
"deviceRegistered":"false"
}
]
uj5u.com熱心網友回復:
您可以檢查屬性并使用布林值的增量。
const
array = [
{ device: "JKJCF00", directory: " 1899990000", label: "Jabber", deviceRegistered: "false" },
{ device: "IOP8999", directory: "9099886644", label: "Desk Phone", deviceRegistered: "false" },
{ device: "KLJ7888", directory: " 8999999", label: "Jabber", deviceRegistered: "true" },
{ device: "VFD87987", directory: " 12386444", label: "Desk Phone", deviceRegistered: "true" }
];
array.sort((a, b) =>
(b.label === 'Desk Phone') - (a.label === 'Desk Phone') ||
(b.deviceRegistered === 'true') - (a.deviceRegistered === 'true')
);
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }
uj5u.com熱心網友回復:
假設:我是這個庫的作者,但我創建了 sort-es 正是為了簡化陣列排序。
如果您有興趣:檔案 GH
import { byValues, byString, byValue, byBoolean } from "sort-es"
const terminals = [] //...items
const sorted = terminals.sort(byValues([
["label", byString()],
["deviceRegistered", byValue(d => d === 'true', byBoolean())]
]))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/417898.html
標籤:
上一篇:N-2在數獨for回圈中做什么來驗證塊JavaScript
下一篇:沿行的矩陣相乘得到一個陣列
