链循环中未执行的链方法

时间:2017-12-28 04:18:26

标签: javascript string sorting

我坚持在for循环中操作一个数组字符串,我相信我没有犯任何语法错误,但它仍然没有按预期工作:

var words = ['bac','ccc','cbd'];

for(var i = 0; i < words.length; i++){
    words[i].split('').sort().join('');
 } //return ['bac','ccc','cbd'], which was expected to be words = ['abc', 'ccc','bcd'];

但它没有循环遍历words中的所有元素,如:

words[0].split('').sort().join(''); // return 'abc'

所以我想知道为什么这些链方法不能在循环中工作?

2 个答案:

答案 0 :(得分:4)

您忘记了作业words[i]=words[i].split('').sort().join('');

var words = ['bac','ccc','cbd'];

for(var i = 0; i < words.length; i++){
    words[i]=words[i].split('').sort().join('');
    
 } // expected to be words = ['abc', 'ccc','bcd'];
console.log(words)

答案 1 :(得分:0)

您必须使用赋值,因为VanillaJS字符串函数本身不会对参数进行赋值,或者作为引用传递。它似乎作为值参数传递。

var words = ['bac','ccc','cbd'];

for(var i = 0; i < words.length; i++){
   words[i]= words[i].split('').sort().join('');
 } 
   console.log(words);

查看下面的屏幕截图。它向您显示,即使没有循环,它也不会像您期望的那样工作。

enter image description here