instanceof
检测一个对象是否是数组;(用来对付复杂数据类型;)
// 简单数据类型 typeof ;
A instanceof B // A是不是B造出来的;
例:
var arr = [1,2,3];
console.log(arr instanceof Array); //arr属不属于Array类型;
Array.isArray( )
Array.isArray(参数); // 判断参数是不是数组,返回布尔值;
例:
var arr = [1,2,3];
var num = 123;
console.log(Array.isArray(arr)); //true
console.log(Array.isArray(num)); //false
toString( )
数组.toString(); // 把数组变成字符串,去除了[],内容用逗号链接;
例:
var arr = ["aaa","bbb","ccc"];
console.log(arr.toString()); //返回 aaa,bbb,ccc
valueOf( )
数组.valueOf(); //返回数组本身;
例:
var arr = ["aaa","bbb","ccc"];
console.log(arr.valueOf());//返回数组本身 ["aaa","bbb","ccc"]
数组.join(参数);
// 数组中的元素可以按照参数进行链接变成一个字符串;
<br>console.log(arr.join()); //和toString()一样用逗号链接
<br>console.log(arr.join("|")); //用参数链接
<br>console.log(arr.join("&")); //用参数链接
<br>console.log(arr.join(" ")); //如果是空格,真的用空格链接
<br>console.log(arr.join("")); //空字符是无缝连接
数组元素的添加和删除push( )和pop( )
- 数组.push() //在数组的最末尾添加元素;
- 数组.pop() //不需要参数;在数组的最末尾删除一项;
例:
var arr = [1,2,3];
var aaa = arr.push("abc");//在数组的最末尾添加一个元素;
console.log(arr);//元素被修改了
console.log(aaa);//返回值是数组的长度;
aaa = arr.pop();//不需要参数;在数组的最末尾删除一项;
console.log(arr);//元素被修改了
console.log(aaa);//被删除的那一项
unshift( )和shift( )
- 数组.unshift() //在数组的最前面添加一个元素;
- 数组.shift() //不需要参数;在数组的最前面删除一项;
例:
var arr = [1,2,3];
aaa = arr.unshift("abc");//在数组的最前面添加一个元素;
console.log(arr);//元素被修改了
console.log(aaa);//返回值是数组的长度;
aaa = arr.shift();//不需要参数;在数组的最前面删除一项;
console.log(arr);//元素被修改了
console.log(aaa);//被删除的那一项
数组元素排序reverse( )
reverse() //翻转数组
例:
var arr1 = [1,2,3,4,5];
var aaa = arr1.reverse(); // [5,4,3,2,1]
sort()
sort() // 数组中元素排序;(默认:从小到大)
// 默认:按照首个字符的Unicode编码排序;如果第一个相同那么就比较第二个…
例:
var arr = [4,5,1,3,2,7,6];
var aaa =arr.sort();
console.log(aaa); // [1, 2, 3, 4, 5, 6, 7]
console.log(aaa === arr);// true 原数组被排序了(冒泡排序)
//默认还可以排列字母;
var arr2 = ["c","e","d","a","b"];
var bbb = arr2.sort();
console.log(bbb); // ["a", "b", "c", "d", "e"]
console.log(bbb===arr2); // true 原数组被排序了(冒泡排序)
sort() //数值大小排序方法,需要借助回调函数;
例:
var arr = [4,5,1,13,2,7,6];
//回调函数里面返回值如果是:参数1-参数2;升幂; 参数2-参数1;降幂;
arr.sort(function (a,b) {
return a-b; //升序
//return b-a; //降序
//return b.value-a.value; //按照元素value属性的大小排序;
});
console.log(arr); // [1, 2, 4, 5, 6, 7, 13]
sort( )底层原理
var aaa = bubbleSort([1,12,3], function (a,b) {
// return a-b;//实参:array[j]-array[j+1];
return b-a;//实参:array[j+1]-array[j];
});
console.log(aaa);
function bubbleSort(array,fn){
//外循环控制轮数,内循环控制次数,都是元素个数-1;
for(var i=0;i<array.length-1;i++){
for(var j=0;j<array.length-1-i;j++){
//次数优化,多比较一轮,少比较一次;
//满足条件交换位置;
// if(array[j]>array[j+1]){//大于升幂排序;否则降幂;
//a-b>0 和 a>b是一个意思;
//b-a>0 和 a<b是一个意思;
// if(array[j]-array[j+1]>0){//升幂排序
// if(array[j+1]-array[j]>0){//降幂排序
//把两个变量送到一个函数中;
if(fn(array[j],array[j+1])>0){
var temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
//返回数组
return array;
}