渡一 14-1&2 三目运算符,数组,类数组
三目运算符
条件判断?是:否 并且会返回值
var num = 1 > 0 ? 2+2 : 1+1; num //4 var num = 1 > 0 ? ('10' > '9' ? 1 : 0) : 2; num //0 字符串先比每一位的ASC码,1<9
数组
定义方法
es3.0 es5.0 es6.0
ECMAScript DOM(html) BOM(浏览器)
var arr = []; var arr = new Array(10); //10代表长度 var obj = {}; var obj = new Object(); var obj = Object.create();
方法
改变原数组:
push,pop,shift,unshift,sort,reverse,splice
push后面加
pop 后面删除
unshift 前面加
shift 前面删
不改变原数组
concat,join --> split,toString,slice
重写push方法
Array.prototype.push = function(){ // return "haha"; for(var i=0;i<arguments.length;i++){ this[this.length] = arguments[i] //this谁调用就是谁 } return this.length; }
unshift - concat拼 for(var i=0;i<arr.length;i++){ newArr.push(arr[i]); }
splice
var arr = [1,1,2,2,3,3]; arr.splice(从第几位开始,截取多少的长度,在切口处添加新的数据) arr.splice(1,2); //返回被截取的1,2 arr=[1,2,3,3] arr.splice(1,1,0,0,0) //arr=[1,0,0,2,2,3,3] arr = [1,2,3,5] arr.splice(3,0,4) 负数的位置实现 splice = function (pos){ pos += pos > 0 ? 0 :this.length; }
sort数组排序
arr=[1,3,4,0,-1,9] arr.sort() //升序 arr.sort().reverse //降序 arr=[1,3,5,4,10]; arr.sort() //[1,10,3,4,5] //当字符按ASC码排序
规则
1,必须写两形参
2,看返回值
2-1 当返回值是负数时,那么前的面数放在前面 不动位置
2-2 为正数,那么后面的数在前 互换位置
2-3 为0,不动
arr.sort(function(a,b){ /* var c = a > b ? 1 : -1; return c; */ return a-b;//升序 return b-a;//降序 })
给一个有序的数组,乱序 var arr=[1,2,3,4,5,6,7]; arr.sort(function(a,b){ return Math.random()- 0.5; //-0.5得到负数 })
给对象按年龄排序 var cheng = { name : "cheng", sex : "male", age : 18, face : "handsome" } var deng = { name : "deng", sex : undefined, age : 40, face : "amazing" } var zhang = { name : "zhang", sex : "male", age : 20, face : "amazing" } var arr = [cheng,deng,zhang]; arr.sort(function(a,b){ return a.age - b.age; })
//按字符串长度排序 var arr = ['abc','bcd','cccc','dddd','asdfkhiuqwe','asdoifqwoeiu','asdf']; arr.sort(function(a,b){ return a.length - b.length; })
//接字节长度来排序 function retByTes(str){ var num = str.length; for(var i=0;i<str.length;i++){ if(str.charCodeAt(i)>255){ num++; } } return num; } var str = 'hello邓'; retByTes(str); //7 var arr = ['a邓','b邓','cc邓cc','老邓','残邓','asdoifqwoeiu','asdf']; arr.sort(function(a,b){ return retByTes(a) - retByTes(b); })
concat,toString,join,slice
concat拼接 var arr = [1,2,3,4,5,6]; var arr1 = [7,8,9]; arr.concat(arr1) //新建立的数组 toString var arr=[1,2]; arr.toString(); //"1,2" slice截取 var arr = [1,2,3,4,5,6]; arr.slice(从该位开始截取,截取到该位) arr.join("") //返回字符串 arr.split("") //是string方法,和join是逆向操作,转数组 var str="alibaba"; var str1="baidu"; var str2="tencent"; var str3="toutiao"; var str4="wangyi"; var str5="xiaowang"; var str6="nv"; var arr = [str,str1,str2,str3,str4,str5,str6]; arr.join() //默认是,联接 alibaba,baidu...