为什么查找对象键的复杂性低于 javascript 中的数组查找?

问题描述 投票:0回答:0

我需要将重音字母(é、ü、á、ï、ö、...等)映射到相应的英语字母(e、u、a、i、o、...等)。

我知道我可以通过几种方法做到这一点:

  1. 遍历数组 - 复杂度 O(n):
const mappingArray = [
   ['é', 'e'],
   ['ü', 'u'],
   ['á', 'a'],
   ['ï', 'i'],
   ['ö', 'o']
];

accentedToEnglish(accented) {
    for (let i = 0; i < mappingArray.length; i++ ) {
      if (mappingArray[i][0] === accented)
            return mappingArray[i][1];
     }
}
  1. 访问对象键 - 复杂度 O(1):
const mappingObject = {
   'é': 'e',
   'ü': 'u',
   'á': 'a',
   'ï': 'i',
   'ö': 'o'
};

accentedToEnglish(accented) {
    return mappingObject[accented];
}

为什么在 javascript 中使用对象键 = O(1) 的上述映射很复杂? javascript 引擎不会在幕后遍历所有键以找到确切的值吗?

javascript v8
© www.soinside.com 2019 - 2024. All rights reserved.