我有一个简单的字符串
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。
我不确定为什么每个人都会用答案使情况复杂化...这是在错误的变量上使用 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
,因为找不到该值。
此外,如果您希望输出与预期的输出语句完全一样,则需要在结果上使用.join()
:
var myArray= ['This is', 'a game', 'worth playing'];
console.log(myArray.map(function(f){ return f.substring(f.indexOf(' ') + 1);}).join(' '));
您必须在数组元素中查找" "
,而不是在数组本身中查找。更改(myArray.indexOf(" ")
至f.indexOf(' ')
。
var myArray= ["This is","a game","worth playing"];
console.log(myArray.map(f => f.substring(f.indexOf(' ') + 1)).join(' '));
问题是您的.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(' '));
您必须将用map
处理的数组保存到变量中。
map((方法创建一个新数组,并带有调用的结果 在调用数组(源(中的每个元素上提供了功能。
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(' '));
这与您的预期输出相匹配:
var myArray= ["This is","a game","worth playing"];
console.log(myArray.map((item) => { return item.replace(/w+s*/i, "") }).join(" "))
或无"加入"的这个:
var myArray= ["This is","a game","worth playing"];
console.log(myArray.map((item) => { return item.replace(/w+s*/i, "") }))
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
这可能不是最简单或最快的