javascript函数接受字符串并返回数组

时间:2014-12-11 20:00:56

标签: javascript arrays string function

首先我有一个包含两个字符串的数组。

var Array = ["firstName lastName" , "anotherString"]

我想创建一个函数,它接受一个字符串作为参数,并通过将输入字符串分解为单个单词来返回一个数组。所以这个例子中的输出是[" firstName"," lastName"]?

我知道它看起来像这样

var newFun = function(string) {
     return string[0]    // than do something else 
}

非常感谢帮助!

7 个答案:

答案 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"]

代码存在于此:http://jsfiddle.net/8xgzkz16/

答案 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

中的split方法做这样的事情
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']