从字符串数组中删除第一个“单词”

时间:2018-02-21 02:03:34

标签: javascript

我有一个简单的字符串数组

var myArray= ["This is","a game","worth playing"];

我试过这个

console.log(myArray.map(function(f){ return f.substring(myArray.indexOf(" ") + 1);}));

哪个行为不起作用。

我的预期输出:

is game playing

我需要纯JavaScript,而不是jQuery。

6 个答案:

答案 0 :(得分:2)

您必须在数组元素中查找" ",而不是在数组本身中查找。更改(myArray.indexOf(" ")f.indexOf(' ')



var myArray= ["This is","a game","worth playing"];

console.log(myArray.map(f => f.substring(f.indexOf(' ') + 1)).join(' '));




答案 1 :(得分:2)

我不确定为什么每个人都会因为他们的答案而使情况变得复杂......这是一个在错误变量上使用indexOf的简单案例......

这一行:

console.log(myArray.map(function(f){ return f.substring(myArray.indexOf(" ") + 1);}));

应该是:

console.log(myArray.map(function(f){ return f.substring(f.indexOf(" ") + 1);}));

您想要检查当前字符串中的空格索引,但是您在原始数组上调用indexOf,当然返回-1,因为找不到该值。 / p>

此外,如果您希望输出与预期的输出语句完全相同,则需要对结果使用.join()



var myArray= ['This is', 'a game', 'worth playing'];
console.log(myArray.map(function(f){ return f.substring(f.indexOf(' ') + 1);}).join(' '));




答案 2 :(得分:0)

问题是,您的.indexOf正在为您阵列中的每个空格返回-1。这是因为您String.indexOf() Array.indexOf() 是两种不同的方法。

要解决这个问题,如何简单地循环遍历数组中的每个元素然后单独处理它们,将它们设置为等于第二个单词?

var myArray = ["This is", "a game", "worth playing"];

for (var i = 0; i < myArray.length; i++) {
  myArray[i] = myArray[i].substr(myArray[i].indexOf(" ") + 1);
}

console.log(myArray);
console.log(myArray.join(' '));

答案 3 :(得分:0)

这个匹配您的预期输出:

&#13;
&#13;
var myArray= ["This is","a game","worth playing"];
console.log(myArray.map((item) => { return item.replace(/\w+\s*/i, "") }).join(" "))
&#13;
&#13;
&#13;

或者这个没有&#34;加入&#34;:

&#13;
&#13;
var myArray= ["This is","a game","worth playing"];
console.log(myArray.map((item) => { return item.replace(/\w+\s*/i, "") }))
&#13;
&#13;
&#13;

答案 4 :(得分:0)

您必须将使用map处理的数组保存到变量中。

  

map()方法创建一个新数组,其中包含调用a的结果   为调用数组中的每个元素提供了函数(source)。

var myArray= ["This is","a game","worth playing"];
myArray = myArray.map(function(str){ 
  return str.substring(str.indexOf(" ") + 1) 
});
// as array
console.log(myArray);
// as string
console.log(myArray.join(' '));

答案 5 :(得分:-1)

function removeFirstWordFromArrayOfWords(array) {
  return array.map(item => {
    return item.split(' ').slice(1);
  }).join(' ');
}

哪个会给你

> var myArray= ["This is","a game","worth playing"];
> removeFirstWordFromArrayOfWords(myArray)
is game playing

这可能不是最简单或最快的