JS函数问题求大佬解惑

1、定义函数,传入一个数组,数组元素的数据类型可以是String、Boolean、Number。判断数组元素类型,对String类型的数组元素去除起始和结尾的空格,对Boolean类型的数组元素转化为Number类型,对Number类型的变量四舍五入为2位小数位数的数字。将处理后的数组元素重新生成一个数组,并在控制台输出。
2、定义函数,传入一个姓氏,从字符串var str = "赵钱孙李周吴郑王冯陈楮卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜" 中查找传入姓氏在字符串中的位置,在控制台输出该位置(数字),如果该姓氏不存在则输出“该姓氏不存在”。使用截取字符串操作截取获得传入姓氏之前的姓氏,并输出到控制台,如果该姓氏之前不存在其它姓氏,则控制台输出该“该姓氏之前姓氏不存在”。

function mapArray(arr) {
    var newArr = arr.map(function(v){
        switch (typeof v) {
            case "string":
                return v.replace(/^\s+|\s+$/g,"");
            case "boolean":
                return v?1:0;
            case "number":
                return Math.round(v*100)/100;
            default:
                return v;
        }
    });
    console.log(newArr);
}


function surname(s) {
    var str = "赵钱孙李周吴郑王冯陈楮卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜";
    var n = str.indexOf(s);
    if (n>=0) {
        console.log("“"+s+"”的位置是:"+n);
        if (n>0) {
            console.log("“"+s+"”之前的姓氏是:"+str.substr(0,n));
        } else {
            console.log("该姓氏之前姓氏不存在");
        }
    } else {
        console.log("该姓氏不存在");
    }
}