首页 > 解决方案 > 用数组助手替换嵌套的 for 循环 - 查找优先级元素

问题描述

我希望用数组帮助器替换嵌套的 for 循环实现以进行优化,

该函数从 testArray 返回字符串,其中包含根据 priorityArray 的最高优先级。

const arr1 = ["A_COUNTY","B_STATE","C_COUNTRY", "D_CONTINENT","E_WORLD"]; 
const arr2 = ["X_COUNTY","Y_STATE","Z_PLANET"];
const priorityArray = ["CONTINENT","COUNTRY","STATE","COUNTY"];

function findPriorityElement(testArray:string[])
{
  for (let i = 0; i <priorityArray.length; i++)
    for (let j = 0; j <testArray.length; j++) {
      if (testArray[j].includes(priorityArray[i])) 
         return testArray[j];
    }

return "";
}

console.log(findPriorityElement(arr1)); // Result: "D_CONTINENT"
console.log(findPriorityElement(arr2)); // Result: "Y_STATE"

任何线索表示赞赏。

标签: javascriptarraysreactjstypescript

解决方案


您可以使用find()而不是内部 for 循环

const arr1 = ["A_COUNTY", "B_STATE", "C_COUNTRY", "D_CONTINENT", "E_WORLD"];
const arr2 = ["X_COUNTY", "Y_STATE", "Z_PLANET"];
const priorityArray = ["CONTINENT", "COUNTRY", "STATE", "COUNTY"];

function findPriorityElement(testArray) {
  for (p of priorityArray) {
    const match = testArray.find(e => e.includes(p));
    if (match) {
      return match;
    }
  }
}

console.log(findPriorityElement(arr1)); // Result: "D_CONTINENT"
console.log(findPriorityElement(arr2)); // Result: "Y_STATE"


推荐阅读