1)数组的使用
数组实际上就是来源对象,脱胎于对象,继承于对象 在数组中所有的下标都会转换为number, 如果不能转换为number的(也就是转换后是NaN的),就会默认添加对象的属性名 数组的长度,仅记录下标的个数,不包含属性数量 数组不可以使用点语法获取下标变量,但是可以使用点语法取属性var arr=["d","e","f","a"]; // 通过这个数组的值创建一个对象,每个对象的属性名是这个数组的每个元素 // 对象的这个属性名对应的值,随机0-9 // 然后复制出一个新对象 var obj={}; for(var i=0;i<arr.length;i++){ obj[arr[i]]=parseInt(Math.random()*10); } var o={}; for(var prop in obj){ o[prop]=obj[prop]; } console.log(o[1]);//这里是找到了0-9的随机数 //Math.random()*10 随机取0-9的数 //parseInt 取整
var obj={ a:1, b:2, c:3, d:4 }; var e={}; for(var prop in obj){ e[prop]=obj[prop]; }; console.log(e[1]);//undefined 对象的所有属性名是无序的数组的循环是根据下标的数字从0开始循环到最大下标,有序 对象是循环所有属性名,无序 对象的属性遍历是根据对象属性名添加的顺序
//这样可以完成不遍历空元素 var arr=[2,4,6,,8,10]; for(var i=0;i<arr.length;i++){ if(!(i in arr))continue; console.log(arr[i]); }
———————————————————————————————————————————— for(var i=0;i<arr.length;i++){ if(i in arr)console.log(arr[i]); }
//对象的浅复制var obj={a:1,b:2,c:3}; var o={}; for(var prop in obj){ o[prop]=obj[prop]; } // 这样o就会把obj都复制过来 // 对象赋值以后,所有内容都没有引用关系了 obj.a=100; console.log(o.a);//1 _____________________________________________ // 以上就是一个对象赋值形成一个新对象 // 要解决这类问题,就考虑到对象深复制 var obj={ a:1, b:{ a:1, b:2 } } var o={}; // 这样只能复制解除最外层的引用关系,这种叫做浅复制 for(var prop in obj){ o[prop]=obj[prop]; } obj.a=10; obj.b.a=10; console.log(o.b.a); //10
2) push,pop,unshift,shift concat和join splice
push 在数组尾部添加一个或者多个元素,并且返回数组的新长度 pop 删除数组尾部的最后一个元素,并且将这个被删除的元素返回 unshift 在数组头部添加一个或者多个元素,并且返回数组的新长度 shift 删除数组的第一个元素,并且返回被删除的元素 concat 数组的合并,合并后会返回一个新数组,原来的两个数组不会变化 join 将数组的每个元素以指定的字符连接形成新字符串返回 splice 这个方法可以从指定的位置删除给定数量的元素,并且在这个位置插入需要的元素并且返回被删除的元素组成的新数组 var testArray=[1,2,3,4,5,6]; var newArray=[2,2,2]; testArray.push(7) console.log(testArray); testArray.pop(); testArray.unshift(0); var n=testArray.shift(); console.log(n);//0 var m=testArray.concat(newArray);//将两个数组合并返回数组新长度 console.log(m); var l=testArray.concat(); console.log(l);//直接使用concat() 可以完成数组的复制 var s=testArray.join(); console.log(s);//直接使用join() 默认用 ,把数组串联起来返回字符串 console.log(testArray.join("|"));//将数组的每个元素以指定的字符连接形成新字符串返回 console.log(newArray.slice(0,1,9),newArray);//9 2 //arr.splice(从什么位置开始,删除多少个元素,要插入的元素); console.log(testArray.slice(0)); //只有一个参数表示从什么位置开始,但是没有结束位置,意味着删除整个数组返回新的数组 console.log(testArray.slice(-2)); //从第几位开始可以是负数,从后向前数(倒数),因为没有给要删除的数量,因此删除到尾部// 去重 var arr=[1,2,3,4,1,2,3,2,1,1,3,7,7,2,1,6,1,2,4,5,1,2,3]; for(var i=0;i<arr.length;i++){ var item=arr[i]; for(var j=i+1;j<arr.length;j++){ if(item===arr[j]){ arr.splice(j,1); j--; } } } console.log(arr);
// 去重 var arr=[1,2,3,4,1,2,3,2,1,1,3,7,7,2,1,6,1,2,4,5,1,2,3]; var arr1=[]; for(var i=0;i<arr.length;i++){ var item=arr[i]; var bool=true; for(var j=0;j<arr1.length;j++){ if(arr1[j]===item){ bool=false; break; } } if(bool){ arr1.push(item); } }