如何用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); 如何使返回值显示为这

这只是我试图学习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);
如何使返回值显示为这样:

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
谢谢这是一个很好的答案。起初我很难阅读,但非常简洁。