对象迭代和比较行为不正确

时间:2018-04-28 17:53:22

标签: javascript javascript-objects

以下用于解决anagrams的代码与ES6(注释)一起使用迭代对象并将aCharMapbCharMap进行比较,但不与ES5代码示例进行比较。

为什么使用ES5版本时代码的行为会有所不同,或者我错过了什么?

function anagrams(stringA, stringB) {
  const aCharMap = buildCharMap(stringA);
  const bCharMap = buildCharMap(stringB);

  if (Object.keys(aCharMap).length !== Object.keys(bCharMap).length) {
    return false;
  }

  //  for (let char in aCharMap) {
  //    if (aCharMap[char] !== bCharMap[char]) {
  //      return false;
  //    }
  //  }

  Object.keys(aCharMap).forEach(function(char) {
    if (aCharMap[char] !== bCharMap[char]) {
      return false;
    }
  });

  return true;
}

function buildCharMap(str) {
  const charMap = {};

  for (let char of str.replace(/[^\w]/g, '').toLowerCase()) {
    charMap[char] = charMap[char] + 1 || 1;
  }

  return charMap;
}

console.log(anagrams('one one', 'two two two'));

0 个答案:

没有答案