首先我有一个包含两个字符串的数组。
var Array = ["firstName lastName" , "anotherString"]
我想创建一个函数,它接受一个字符串作为参数,并通过将输入字符串分解为单个单词来返回一个数组。所以这个例子中的输出是[" firstName"," lastName"]?
我知道它看起来像这样
var newFun = function(string) {
return string[0] // than do something else
}
非常感谢帮助!
答案 0 :(得分:2)
如此简单,使用String.prototype.split
方法将字符串拆分为数组列表。
MDN:
split()方法通过将字符串分隔为子字符串将String对象拆分为字符串数组。
return str.split(' ');
@Christoph: 你在这里使用一些非常糟糕的约定。
var Array
function (string)
Array
是javascript中的预定义类,string
非常接近预定义的类String
,因此请避免完全使用它们。
var arr;
function (str)
简短方法:拆分包含多个单词的字符串,处理String.prototype.split(' ')
无法像" firstName Lastname"
或"firstName Lastname"
那样处理的时髦字符串。返回Array
function smartSplit (str) {
// .trim() remove spaces surround the word
// /\s+/ split multiple spaces not just one ' '
return str.trim().split(/\s+/);
}
测试用例:
// case: split(' ');
console.log(" firstName lastName".split(' '));
// result: ["", "", "", "firstName", "", "", "", "lastName"]
// case: split(/\s+/)
console.log(" firstName lastName".split(/\s+/));
// result: ["", "firstName", "lastName"]
// case: .trim().split(/\s+/)
console.log(smartSplit(" firstName lastName"));
// result: ["firstName", "lastName"]
完整方法:与smartSplit
相同,但要求Array
作为参数而不是String
function smartSplitAll (strArr) {
var newArr = [];
for (var i = 0; i < strArr.length; i++) {
// expecting string array
var str = strArr[i].trim();
// split the string if it has multiple words
if (str.indexOf(' ') > -1)
newArr = newArr.concat(str.split(/\s+/));
else
newArr.push(str);
}
return newArr;
}
console.log(smartSplitAll(["firstName lastName", "anotherString"]);
// result: ["firstName", "lastName", "anotherString"]
答案 1 :(得分:1)
[0]的索引实际上是字符串的第一个字符。
这样做:
var myString = "My Name";
var splitResult = myString.split(" ");
将导致:
["My", "Name"]
答案 2 :(得分:0)
var newFun = function(str) {
return str.split(" ");
}
答案 3 :(得分:0)
你可以使用对象String
var newFun = function(string) {
return string[0].split(" ");
}
Voilà!
答案 4 :(得分:0)
您可以使用字符串拆分方法:
function splitString(input) {
return input.split(" ");
}
答案 5 :(得分:0)
您的代码有几条评论:
1)您正在寻找的功能是String.prototype.split
:
var string = "firstName lastName";
string.split(" ");
// returns an array: ["firstName","lastName"]
2)不要调用你的数组Array
。这是Array原型的“保留字”*!如果你这样做,你就会覆盖原型!
3)保持参数的命名一致。这样就可以像在代码中一样避免错误。移交数组并调用参数字符串是个坏主意。 string[0]
返回字符串的第一个符号,array[0]
数组的第一个元素。另外,请正确命名该功能。
您的代码应如下所示:
var array = ["firstName lastName" , "anotherString"];
function returnSplitString(string){
return string.split(" ");
}
var splitStringArray = returnSplitString(array[0]);
*
在严格的技术意义上它不是,因为你可以用这个方式命名你的变量,但是这样做是个坏主意。
答案 6 :(得分:0)
此拆分器将采用任何带有混合字符串的数组(带空格且没有空格的字符串)并将它们拆分为线性数组。
var splitter = (array) => {
return array.reduce((acc, value) => {
return /\s/.test(value) ? acc.concat(value.trim().split(' ')) : acc.concat(value) ;
}, []);
}
console.log(splitter(["There is proper space", "ThereIsNoSpace"]));
将输出:
['There', 'is', 'proper', 'space', 'thereisnospace']