我正在创建一种基本算法来查找字符串中最长的单词。但是我遇到了一个问题,其中分配了不同变量的两个数组显示为相等。这是我的代码:



function LongestWord(sen) {
  var arr = sen.split(' '); // arr = ['How', 'is', 'your', 'dinner']
  var wordsLength = arr.map(function(word) { // wordsLength = [3, 2, 4, 6]
    return word.length;
  });
  var sortLength = wordsLength.sort(function(a, b) { //sortLength = [6, 4, 3, 2]
    return b - a;
  });

  console.log(wordsLength === sortLength);

}
LongestWord("How is your dinner");





我评论了我期望每个数组在代码中相等的东西。但是wordsLength在甚至声明sortLength var之前就已经被排序了。我知道这是因为控制台记录了"TRUE"。我认为map可能会以某种方式自动对变量进行排序,但是当我注释掉sortLength时,wordsLength未按我最初的预期进行排序。
显然,第二个变量声明正在影响第一个变量声明,但我不确定为什么。我不知道会导致这种行为的任何概念。

最佳答案

array.sort()对数组进行排序并返回它。
因此,您对arrLength进行了排序并将其分配给sortLength,现在它们是相等的。

关于javascript - 相互影响的Javascript变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35137056/

10-14 02:22