首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用函数实现Split方法

使用函数实现Split方法
EN

Stack Overflow用户
提问于 2019-06-05 06:20:43
回答 1查看 544关注 0票数 0

我想用一个函数来实现split方法

这就是我想要达到的目标

代码语言:javascript
复制
var string = 'aa,bb,c';

var separator = ',';

var stringList = string.split(separator);

function splitString() {
  console.log(stringList);
}

这将返回此array

代码语言:javascript
复制
["aa", "bb", "c"]

我正尝试用一个函数实现同样的功能,但它返回一个空的array [] and not ["aa", "bb", "c"]

我已经为那些可以提供帮助的人创建了一个jsbin

代码语言:javascript
复制
function split(string,separator) {
  var cache = [];
  var cachInt = 0;
  var lastWord = '';
  for (var i = 0; i < string.length; i++) {
    if(string[i] === separator) {
        cachInt++
        lastWord = ''
    }
    else {
      lastWord = lastWord + string[i];
      cache[cachInt] == lastWord;
    }
  }
  return cache;
}


function splitString() {
  console.log(split('string, separator',','));
}
EN

回答 1

Stack Overflow用户

发布于 2019-06-05 06:26:40

您可以执行以下操作:

代码语言:javascript
复制
cache[cachInt] == lastWord;

这应该是,因为你不是在比较,而是在赋值:

代码语言:javascript
复制
cache[cachInt] = lastWord;

既然我们做到了,还有改进的余地。你的版本有上面提到的这一行。这行代码在i的每次迭代中都会运行。这并不是真正需要的,因为您只想在拆分时执行保存:

代码语言:javascript
复制
if(string[i] === separator) {
    cache[cachInt] = lastWord; // Only assign when we find a seperator
    cachInt++
    lastWord = ''
} else {
    lastWord = lastWord + string[i];
}

这有一个小问题:字符串的最后一部分通常没有分隔符,它是a,b,c而不是a,b,c,。我们可以通过在for之后进行检查来轻松解决这个问题,看看您是否还有剩余的东西:

代码语言:javascript
复制
if( lastWord!=='' ){
     cache[cachInt] = lastWord;
}
return cache;

这有一个额外的特性,它可以作为一个rtrim()工作(你是否想要它取决于你自己)。

另外,如果你不需要支持老版本的IE,那么就不要使用var,而是使用let。如果你想知道为什么,this question explains it well

然后,您将使用计数器来记住要使用哪个cachInt。因为我们现在只在每个"cacheInt“中使用它一次,例如每个单词一次,我们知道每个加法都是+1,并且每个单词只发生一次。我们也并不真正关心索引,我们只希望每个单词都添加一次。因此,您可以使用cache[] = lastWord,或者使用push,后者稍微更简洁一些:cache.push(lastWord)

通过删除此计数器的用法,还可以删除函数开头的cachInt++let/var cachInt,从而使代码更小。

以上所有情况的结果:

https://jsbin.com/mejayuv/1/edit?html,js,console,output

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56452049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档