获得第一个单词在位置0、其他单词在位置1的数组作为输出的最佳方法



我需要知道我是否可以让这个代码变得更好更快。

示例输入:

"hi my name is john cena"

预期输出:

["hi", "my name is john cena"]

我的代码:

function getParams(query) {
var keys = query.split(' ');
var params = [];
if(keys.length >= 2) {
params.push(keys[0]);
params.push("");
for(var i = 1; i<=keys.length - 1; i++) {
if(i != keys.length - 1) {     
params[1] += keys[i] + " ";  
}  else { 
params[1] += keys[i];
}
}
}
return params;
}

您可以使用rest/spread语法的魔力来构建您想要的结果array:

function getParams(query) {
let [first, ...rest] = query.split(" ");
return [first, rest.join(" ")];
}

解释:

  • 在以下代码中,first将保存CCD_ 5和CCD_ 6的结果CCD_CCD_ 7
  • 然后我们返回一个包含first和其余arrayarray使用rest.join(" ")作为string加入以获得所需CCD_ 13字符串的原始剩余部分

演示:

let str = "hi my name is john cena";
function getParams(query) {
let [first, ...rest] = query.split(" ");
return [first, rest.join(" ")];
}
console.log(getParams(str));

Array.slice方法在这里非常有用。

function getParams(x) {
const index = x.indexOf(' ')
return [x.slice(0, index), x.slice(index + 1)]
}

var text = "hi my name is john cena";
function getParams(query) {
var idx = query.indexOf(' ');
return [ query.substr(0, idx), query.substr(idx + 1) ];
};
console.log(getParams(text));

希望这能帮助你

您可以简单地根据空白的第一次出现将字符串拆分为两部分:

let str = "hi my name is john cena";
let result = str.split(/s(.+)/);
result.pop()
console.log(result);

最新更新