如何用javascript编写一个帮助程序,将数组和字符串相乘?
这只是我试图学习javascript的一个思想实验,一个叫做的想法如何用javascript编写一个帮助程序,将数组和字符串相乘?,javascript,arrays,string,functional-programming,duck-typing,Javascript,Arrays,String,Functional Programming,Duck Typing,这只是我试图学习javascript的一个思想实验,一个叫做的想法 function calc(a,b,c) { return (a+b)*c; } var example1 = calc(1,2,3); var example2 = calc([1,1,3],[2,2,3],3); var example3 = calc ('ape ', 'and cat, ', 3) console.log(example1, example2, example3); 如何使返回值显示为这
function calc(a,b,c) {
return (a+b)*c;
}
var example1 = calc(1,2,3);
var example2 = calc([1,1,3],[2,2,3],3);
var example3 = calc ('ape ', 'and cat, ', 3)
console.log(example1, example2, example3);
如何使返回值显示为这样:
9
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]
ape and cat, ape and cat, ape and cat,
目前,它们将打印为:
9
NaN
NaN
里面有帮手吗
以下是示例代码:
这只是为了向您展示它应该做什么以及duck类型的含义。但是实现应该由您来完成。它可能是这样的:
function calc(a,b,c) {
var ret=[];
if(a.constructor === Array && b.constructor === Array){
for(i=0;i<c;i++){
ret=ret.concat(a.concat(b));
}
return ret;
}
if(typeof a == 'string' && typeof b == 'string'){
var str='';
for(i=0;i<c;i++){
str=str+a+b;
}
return str;
}
return (a+b)*c;
}
var example1 = calc(1,2,3);
console.log(example1)
var example2 = calc([1,1,3],[2,2,3],3);
console.log(example2)
var example3 = calc ('apples ', 'and oranges, ', 3)
console.log(example3)
函数计算(a、b、c){
var-ret=[];
if(a.constructor==Array&&b.constructor==Array){
对于(i=0;i这应该适用于字符串、数字和数组。此外,如果我们想以类似于字符串的方式隐式使用+运算符,我也曾尝试过将数组转换为字符串,然后再转换回来
function calc(a, b, c) {
var combine, total,
isArray = a instanceof Array && b instanceof Array,
i;
combine = total = isArray ? a.concat(b) : a + b;
for (i = 1; i < c; i++) {
total = isArray ? total.concat(combine) : total += combine;
}
return total;
}
函数计算(a、b、c){
var合并,总计,
isArray=a instanceof Array&&b instanceof Array,
我
联合收割机=总数=isArray?a.混凝土(b):a+b;
对于(i=1;i
谢谢这是一个很好的答案。起初我很难阅读,但非常简洁。