我有一个ID编号的数组,第二个数组带有这些ID编号的名称。
然后,我有了第三个数组,该数组将仅包含一些ID号。
我想要做的是对照包含所有ID的第一个数组检查第三个数组中的值。然后,我要在第一个和第三个数组中都具有的ID作为第二个数组中的匹配名称返回,第二个数组具有第一个数组中ID的名称。

let seriesIDs = [ 5862, 5869, 5865, 5883, 5884, 5887 ];
let seriesNames = [ '9XM', '9XE', '8XE', '8XT', '8XEP', '2NX' ];
seriesIDs = seriesNames;

let thirdArray = [ 5869, 5865 ];


(这些值不会事先知道。我将遍历第三个数组,并检查上面名为seriesIDs的数组中的哪些值)

我需要循环thirdArray,然后需要对thirdArray中的值进行检查,以检查数组seriesID,并且该数组中的匹配值应触发数组seriesNames中对应名称的返回。

因此,例如,如果thirdArray包含值[5869、5865],那么我想要返回的将是“ 9XE”和“ 8XE”

有人可以帮忙吗?

最佳答案

我要做的是从两个数组切换到一个对象。而不是说:

let seriesIDs = [ 5862, 5869, 5865, 5883, 5884, 5887 ];
let seriesNames = [ '9XM', '9XE', '8XE', '8XT', '8XEP', '2NX' ];


我会做:

const seriesMap = {
    5862: '9XM',
    5869: '9XE',
    ...
    5887: '2NX'
};


然后,您只需通过索引器运算符检查名称即可:

const firstName = seriesMap[thirdArray[0]];
const secondName = seriesMap[thirdArray[1]];


无论如何,如果您无法使用这种解决方案。您可以这样做:

let seriesIDs = [ 5862, 5869, 5865, 5883, 5884, 5887 ];
let seriesNames = [ '9XM', '9XE', '8XE', '8XT', '8XEP', '2NX' ];
let thirdArray = [ 5869, 5865 ];

const names = [];
for(const id of thirdArray) {
    const idx = seriesIDs.indexOf(id);
    if(idx !== -1) {
        names.push(seriesNames[idx]);
    }
}

console.log(names);

09-11 19:11
查看更多