定义一个函数 myJoin
,接受最多两个参数:
array
separator
(字符串,可选)
myJoin
函数应返回一个字符串,其中包含数组中的所有元素连接在一起。分隔符应该用来分隔已连接的元素:
myJoin(['a', 'b', 'c'], '+'); // => "a+b+c"
如果未定义分隔符,则使用逗号
','
作为默认分隔符。myJoin(['Peter', 'Paul', 'Mary']); // => "Peter,Paul,Mary"
如果数组中有任何元素是undefined
或null
,它们应该在返回的字符串中被替换为一个空字符串。
myJoin(['hello', undefined, 'world'], '-'); // => "hello--world"
我无法使用内置的 join
方法。
目前我已经尝试了:
function myJoin (array, separator) {
let newString = "";
if (separator = undefined) {
separator === ",";
}
else {
for (let i = 0; i < array.length; i++) {
newString = i + separator;
}
}
newString = array.toString();
return newString;
}
console.log(myJoin(['a', 'b', 'c'], '+'));
^ 这不是将字符串的元素与分隔符组合在一起,而实际上返回了两次a,b,c
。有任何想法吗?
编辑:在 @Jonas Wilms 的建议后,首次更新代码:
function myJoin (array, separator) {
let newString = "";
if (separator === undefined) {
separator === ",";
}
for (let i = 0; i < array.length; i++) {
newString += array[i] + separator;
}
return newString;
}
这在我的VS Code控制台中似乎可以工作,但在CodePen中无法工作。
for
循环不应该在else
子句中,而且if
测试中的比较应该是==
而不是=
(=
是用于 赋值)。 - Pointyi
)和分隔符的newString
。然后将newString
转换为字符串并返回它。 - HappyHands31if (separator = undefined)
是将变量 separator 赋值为undefined
值,而不是您期望的比较。 - Shidersz