【发布时间】:2022-11-03 22:26:46
【问题描述】:
我正在尝试将对象从一个数组移动到七个不同的数组中。它们从一开始就在一个阵列中。我想根据另一个数组中具有一个相关属性的值对它们进行排序。
我要排序的数组 1
var serialList = [
{
"OrderNumber": "1",
"ArticleNumber": "CLIENT",
"SerialNumber": "111"
},
{
"OrderNumber": "2",
"ArticleNumber": "IPAD",
"SerialNumber": "222"
},
{
"OrderNumber": "3",
"ArticleNumber": "PHONE",
"SerialNumber": "333"
},
{
"OrderNumber": "4",
"ArticleNumber": "SWITCH",
"SerialNumber": "444"
},
{
"OrderNumber": "5",
"ArticleNumber": "HARDWARE",
"SerialNumber": "555"
},
{
"OrderNumber": "6",
"ArticleNumber": "MAC",
"SerialNumber": "666"
},
{
"OrderNumber": "7",
"ArticleNumber": "PRINTER",
"SerialNumber": "777"
},
{
"OrderNumber": "8",
"ArticleNumber": "MAC",
"SerialNumber": "888"
}
];
我要比较的数组
var articleNumberList = [
{
"Article": "CLIENT",
"Model": "client"
},
{
"Article": "IPAD",
"Model": "ipad"
},
{
"Article": "PHONE",
"Model": "phone"
},
{
"Article": "SWITCH",
"Model": "switch"
},
{
"Article": "HARDWARE",
"Model": "hardware"
},
{
"Article": "MAC",
"Model": "mac",
}, {
"Article": "PRINTER",
"Model": "printer"
}
];
我想检查第一个数组属性 ArticleNumber 并将其与第二个数组属性 Article 进行比较。一旦找到匹配项,将其排序到另一个数组中,对应于 Article 属性
我尝试过的(目前正在工作)
for (i = 0; i < serialList.length; i++) {
for (u = 0; u < articleNumberList.length; u++) {
if (serialList[i].ArticleNumber == articleNumberList[u].Article) {
if (serialList[i].ArticleNumber == "CLIENT") {
clientList.push(serialList[i]);
} else if (serialList[i].ArticleNumber == "IPAD") {
ipadList.push(serialList[i]);
} else if (serialList[i].ArticleNumber == "PHONE") {
phoneList.push(serialList[i]);
} else if (serialList[i].ArticleNumber == "SWITCH") {
switchList.push(serialList[i]);
} else if (serialList[i].ArticleNumber == "HARDWARE") {
hardwareList.push(serialList[i]);
} else if (serialList[i].ArticleNumber == "MAC") {
macList.push(serialList[i]);
} else if (serialList[i].ArticleNumber == "PRINTER") {
printerList.push(serialList[i]);
}
}
}
};
为什么我不想使用此解决方案: 它是一个嵌套的for循环,最终将用于各种硬件的数据库,数组serialList今天有几千长并将继续增长,数组articleNumberList目前在40左右并且还将继续增长。我也不太喜欢 IF、ELSE IF 语句,我觉得它可能可以用 array.filter() 处理,但我真的不知道如何处理它。
【问题讨论】:
标签: javascript arrays sorting