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