目录
(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);
}