Это, вероятно, лучше обрабатывать декларативным способом по сравнению с императивом . Это будет короче и легче рассуждать.
Учитывая, что вы используете два массива и что коды в первом массиве всегда будут находиться где-то во втором массиве:
let causes = ["001", "003", "005"];
let codes = [
["001","Earthquake"],
["002","Sunspots"],
["003","User Error"],
["004","Snakes"],
["005","Black Magic"]
];
let results = causes.map( cause => codes[ codes.findIndex( code => code[0] === cause ) ][1] );
console.log(results); // ["Earthquake", "User Error", "Black Magic"]
Что здесь происходит? Мы сопоставляем массив потенциальных причин ошибки (первый массив) со списком описаний, взятых из второго массива.
Array.map принимает функцию, которая вызывается один раз для каждого члена массива. Мы назовем этого члена «потому что».
Array.findIndex принимает функцию, которая вызывается один раз для каждого члена массива. Мы назовем этого члена «кодом».
Для каждой причины в причинах мы находим индекс в кодах, где первое значение массива равно причине, а затем возвращаем второе значение массива, описание.
Если у вас есть возможность изменить второй массив на объект, то это становится намного проще:
let causes = ["001", "003", "005"];
let codes = {
"001":"Earthquake",
"002":"Sunspots",
"003":"User Error",
"004":"Snakes",
"005":"Black Magic"
};
let results = causes.map( cause => codes[cause] );
console.log(results); // ["Earthquake", "User Error", "Black Magic"]