我需要实现一个字符串连接功能,功能如下所示,
function concatenation(original: string, name1?, name2?){
return original + name1 + name2;
}
但是,问题是,关于
name
的参数还可以多一些;因此,这不是一个好的编码风格。我想改变它,如下所示。
function concatenation(original: string, name?:[string]){
return original + ...name1;
}
但是这样一来,程序就会报错。我怎样才能实现它?
您可以将休息与join一起使用,如下所示:
function concatenation(original: string, name1?, name2?) {
return original + name1 + name2;
}
concatenation('Original', 'Name1', 'Name2', 'Name3');
这可以处理任意数量的字符串参数
function concatenation2(...names: string[]) {
return names.join('');
}
concatenation2('Original', 'Name1', 'Name2', 'Name3');
function concatenation2(...names) {
return names.join('');
}
console.log(concatenation2('Original', 'Name1', 'Name2', 'Name3'));
提供您的错误报告将使您更容易发现您的真正的问题。
事实上,你的函数
concatenation
实际上所做的只是连接多个字符串变量,尽管你试图通过名称来区分它们。由于您想将变量放置在函数的参数中,因此您可以简单地使用 解构赋值。
function concatenation(...items) {
// `items` is an Array consisting of all the function arguments.
return items.join('');
}
concatenation(1,2,3) // "123"
concatenation("a", "bcd", "ef", "g", "h") // "abcdefgh"
并且请注意,您不能在 JavaScript 中使用 TypeScript 类型注释。而且问题描述中的类型注释实际上是不合法的。
您不能使用任何类型的算术运算符(如( +、- 等...))来解构 javascript 对象。
function concatenation(original: string, names?: [string]) {
return `${original}${names.split("")}`;
}
concatenation("original", ["name1", "name2", "name3"]);