我有一个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);