我们正在尝试编写一个函数,该函数接受一个字符串数组和一个分隔符,并将所有由该分隔符分隔的字符串连接起来。
我们不允许使用.join()方法。
到目前为止,尽管每次所有字符串都在它们之间添加了一个分隔符,但我仍坚持尝试进行迭代。
我尝试过类似的事情:
var aName = ['Frank','Vincent','Zappa'];
var join = (arr, separator = " ") => {
for(var i = 0; i < arr.length; i++) {
return arr[i] + separator + arr[i+1];
}
};
join(aName, ' ');
//output: "Frank Vincent"
//expected output: "Frank Vincent Zappa"
感谢您的帮助。
答案 0 :(得分:2)
要修复您当前的代码,请尝试串联,并且仅在末尾return
:
var aName = ['Frank', 'Vincent', 'Zappa'];
var join = (arr, separator = " ") => {
let result = '';
for (var i = 0; i < arr.length; i++) {
if (result) {
result += separator;
}
result += arr[i];
}
return result;
};
console.log(join(aName, ' '));
答案 1 :(得分:1)
您可以使用String constructor
var name = ['Frank', 'Vincent', 'Zappa'];
console.log(String(name).replace(/,/g,' '))
答案 2 :(得分:1)
一种非常简单的方法是仅对第二个元素追加分隔符:
const arr = ["Frank", "Vincent", "Zappa"];
const join = (arr, sep = " ") => {
if (!arr || !arr.length) return "";
let ret = arr[0];
for (let i = 1; i < arr.length; i++) {
ret += sep + arr[i];
}
return ret;
};
console.log(join(arr));
console.log(join(arr, "-"));
答案 3 :(得分:1)
您可以减少数组:
function join(arr, separator)
{
return arr.reduce((str, a)=> {return a+separator+str})
}
答案 4 :(得分:1)
您可以先检查数组的长度,如果长度为零,则返回一个空字符串。
否则,将第一个元素作为结果的起始值,并从第二个元素进行迭代,并添加分隔符和数组的值。
继续直到没有其他元素。然后返回结果字符串。
var join = (array, separator = ' ') => {
if (!array.length) return '';
var result = array[0];
for (var i = 1; i < array.length; i++) {
result += separator + array[i];
}
return result;
},
array = ['Frank', 'Vincent', 'Zappa'];
console.log(join(array, ' '));
答案 5 :(得分:0)
您的代码存在的问题是,您在return
循环中使用了for
,这意味着该函数将停止执行并返回您在return
中编写的值。
为避免这种情况,您应该编写如下内容:
var name = ['Frank','Vincent','Zappa'];
var join = (arr, separator = " ") => {
var result = '';
for(var i = 0; i < arr.length; i++) {
// adding to result string arr[i] and separator
result += arr[i] + separator;
}
// deleting separator in the end of string
return result.slice(0, -1);
};
join(name, ' ');
答案 6 :(得分:0)
我认为目标是学习JavaScript基础而不是技巧。只需使用以下方法:
syslog-ng
答案 7 :(得分:0)
准确地说,如果没有join()
,就无法创建字符串,因为JavaScript在内部始终会为数组调用join()
。但是,如果您只想创建自己的join()
函数,则可以遍历数组,在当前项目中添加一个分隔符,然后执行此操作,直到到达只添加当前项目而没有分隔符的末尾为止。
var name = ['Frank', 'Vincent', 'Zappa'];
function join(arr, separator = " ") {
var str = "";
if (arr.length === 0) return str;
for (var i = 0; i < arr.length; i++) {
str += i !== arr.length - 1 ?
arr[i] + separator :
arr[i];
}
return str;
};
console.log(join(name, ' '));
答案 8 :(得分:0)
在es2015中使用咖喱函数的解决方案
const joinStrings = glue = ' ' => strings => {
let res = '';
strings.forEach(str => res += glue + str);
return res.replace(glue, '');
}
const joined = joinStrings(', ')(['a', 'b', 'c']);
console.log(joined);
答案 9 :(得分:0)
var names = ['Frank','Vincent','Zappa'];
const join = (names, separator) => {
let str = '';
for(let i = 0; i < names.length; i++) {
str += (str ? separator : '') + names[i];
}
return str;
}
console.log(join(names, ' '));
答案 10 :(得分:0)
function joinFunction(arr){
let string = ''
for( let char of arr ){
string += char + ' '
}
console.log(string)
}
joinFunction(['Frank','Vincent','Zappa'])