将每个单词推入数组

16

如果我有一个文本字符串,我该如何将其转换为包含字符串中每个单词的数组?

类似于以下内容:

var wordArray = [];
var words = 'never forget to empty your vacuum bags';

for ( //1 ) {
  wordArray.push( //2 );
}
  1. 遍历名为“words”的字符串中的每个单词
  2. 将该单词推入数组中

这将创建以下数组:

var wordArray = ['never','forget','to','empty','your','vacuum','bags'];
5个回答

36

不要使用迭代,只需使用split()函数,它会返回一个数组:

let words = 'never forget to empty your vacuum bags',
  wordArray = words.split(' ');

console.log(wordArray);

JS Fiddle演示

使用String.prototype.split()@jfriend00(下方评论中)建议的正则表达式:

let words = 'never forget to empty your vacuum bags',
  wordArray = words.split(/\s+/);

console.log(wordArray);

参考资料:


4
建议使用.split(/\s+/)处理多个空格。 - jfriend00
1
@Wendy:JavaScript 中的所有内容都是对象,包括数组。如果您尝试运行 console.log( wordArray instanceof Array ),结果应该为 true,除非您已经尝试过了?但是由于 String.prototype.split() 总是返回一个数组(就我所知,从几次阅读文档中得出),我相当有信心它返回的是一个数组。 - David Thomas

5
以下是可能的重新表述版本(非正则表达式):
可以考虑一种不涉及正则表达式的替代方案。

let words = '     practice   makes   perfect  ',
  wordArray = words.split(' ').filter(w => w !== '');

console.log(wordArray);

或者只需使用String.prototype.match()

let words = '     practice   makes   perfect  ',
  wordArray = words.match(/\S+/g);

console.log(wordArray);


1
如果您想遍历数组,请使用以下代码:

let wordArray = [];
let words = 'never forget to empty your vacuum bags';

let wordsSplit = words.split(" ");
for(let i=0;i<wordsSplit.length;i++) {
    wordArray.push(wordsSplit[i])
}

但更合理的做法是不进行迭代,直接使用:

let words = 'never forget to empty your vacuum bags';
let arrOfWords = words.split(" ")

0

我尝试了许多来自 StackOverflow 和其他网站的方法。对于大多数情况有效的方法如下:

function stringToArrayOfWords(str) {
    return str.split(' ').filter(w => w !== '')
}

0

尝试下面的代码,它会有所帮助。

var wordArray = [];
var words = 'never forget to empty your vacuum bags';
wordArray = words.match(/\b[-?(\w+)?]+\b/gi);
console.log(wordArray)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接