【发布时间】:2019-08-23 03:34:57
【问题描述】:
定义一个函数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测试中的比较应该是==而不是=(=是针对 分配)。 -
当然我想说的是,如果定义了分隔符,则循环遍历数组以使用数组中的项目 (
i) +separator创建一个newString。然后将newString转成字符串返回。 -
代码
if (separator = undefined)正在将变量分隔符分配给undefined值,而不是您期望的比较。
标签: javascript arrays string function separator