js算法面试题(一)

目录

(1)将字符串中带下划线的字符名转化为驼峰命名法

补充:

(2)ES6数组去重

补充:

(3).sort排序

(4)一维数组的动态和

(5)斐波那契数列


(1)将字符串中带下划线的字符名转化为驼峰命名法

aaa_bbb_ccc => aaaBbbCcc a_b_c => aBC

// aaa_bbb_ccc => aaaBbbCcc a_b_c => aBC
        const str1 = "asds_dads_dsajnv_fsa_aa_bbb_ccc"
        function workhandle(str) {
            var arr = str.split('');
            var len = 0;
            for (let i = 0; i < arr.length; i++) {
                let replace = "";//替换的大写子母存放
                let count = 0;//下划线的index值
                if (arr[i] == "_") {
                    count = i;
                    len = len + 1;//下划线的个数
                    replace = str.split('_')[len].split('')[0].toUpperCase();
                    arr.splice(count, 2, replace);
                }
            }
            let workstr = arr.join("");
            return workstr;
        }
        workhandle(str1)
        console.log(workhandle(str1))

补充:

        ①.split和.splice

        ②.join

        ③.toUpperCase和.toLowerCase

.split(' ') :拆分字符串变成数组,括号里填的是根据什么字符拆分,拆分之后可以使用数组方法(字符串方法)

var str = "i am muxiao, i like swimming";
str.split('');//['i', ' ', 'a', 'm', ' ', 'm', 'u', 'x', 'i', 'a', 'o', ',', ' ', 'i', ' ', 'l', 'i', 'k', 'e', ' ', 's', 'w', 'i', 'm', 'm', 'i', 'n', 'g']
str.split(',');//['i am muxiao', ' i like swimming']
str.split('i');//['', ' am mux', 'ao, ', ' l', 'ke sw', 'mm', 'ng']

.splice(参数一,参数二,参数三(可选)) :(数组方法:会修改原来的数组值)

        参数一:要删除的位置索引

        参数二:要删除的数量

        参数三:要插入的值

var arr = ['ds','dsd','12',12,'21'];
arr.splice(0,2);//['ds', 'dsd']
console.log(arr);// ['12', 12, '21']

var arr1 = ['ds','dsd','12',12,'21'];
arr1.splice(0,2,"muxiao");
console.log(arr1);//['muxiao', '12', 12, '21']

.join() :将数组的所有元素转化字符串(不改变原数组)(数组方法)

var arr = ['ds','dsd','12',12,'21'];

//不传参或undefined是以逗号分隔的字符串;
arr.join();//'ds,dsd,12,12,21'
//以传参的符号来分隔
arr.join("");//'dsdsd121221'
arr.join("_");//'ds_dsd_12_12_21'

 .toUpperCase(小写字母变成大写字母)

.toLowerCase(大写字母变成小写字母)

var str = "aaaaHHHHmuxiao";
str.toUpperCase();//'AAAAHHHHMUXIAO'
str.toLowerCase();//'aaaahhhhmuxiao'


(2)ES6数组去重

function arrhandle(arr) {
    return Array.from(new Set(arr));
}

var arr1 = [1,1,1,2,2,2,3,3,3,3,4];
arrhandle(arr1); //[1,2,3,4]

补充:

        ①Array.from

        ②new Set()

Array.from:将一个类数组对象或者可遍历对象转化成真正的数组

条件:

1、必须具有length属性,用于指定数组的长度。如果没有length属性,那么转换后的数组是一个空数组。

2、属性名必须为数值型或字符串型的数字

var str = "aaaaHHHHmuxiao";
Array.from(str);//['a', 'a', 'a', 'a', 'H', 'H', 'H', 'H', 'm', 'u', 'x', 'i', 'a', 'o']

let obj = {
    name: "muxiao",
    age: 99,
    money: '1000'
}
Array.from(obj);//[]

let obj1 = {
    0: "muxiao",
    1: 99,
    2: '1000',
    length: 3
}
Array.from(obj1);// ['muxiao', 99, '1000']

let obj2 = {
    0: "muxiao",
    1: 99,
    2: '1000',
    'length': 3
}
Array.from(obj2);//['muxiao', 99, '1000']


(3).sort排序

var arr1 = [1,2,4,5235,5435,23,5,43,1,3,43,53,35,45,54,43,43,43,434];
function sortHandle(arr) {
    arr.sort((n1,n2) =>{
        return n1 - n2;
    });
    return arr;
}
sortHandle(arr1);//[1, 1, 2, 3, 4, 5, 23, 35, 43, 43, 43, 43, 43, 45, 53, 54, 434, 5235, 5435]

(4)一维数组的动态和

流程:[4,6,12,7,3] => [4, 4+6, 4+6+12, 4+6+12+7, 4+6+12+7+3] => [4,10,22,29,32]

var runningSum = function(nums) {
    for(let i = 0; i < nums.length; i++) {
        if(i>0) {
            nums[i] = nums[i] + nums[i-1];
        }
    }
    return nums
}

let arr = [4,6,12,7,3];
runningSum(arr);//[4, 10, 22, 29, 32]

(5)斐波那契数列

过程:1 1 2 3 5 8 13 21...... 

var Fibonacci = function(num) {
    if(num == 1 || num == 2) {
        return 1
    };
    return Fibonacci(num-1) + Fibonacci(num -2);
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.MUXIAO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值