Array

2019-09-29  本文已影响0人  随风飞2019

数组的创建,最简单的字面量方式

var arr = [ 1,2,77,8,4,5 ];

添加、删除

arr.length = 0; //清空数组的方法,让length等于0;
arr = []; //从新赋值一个空数组,清空
arr.unshift( 0 ); //向数组的第一位添加内容
arr.push( 99 ); //向数组最后一位添加内容
arr.shift();// 删除数组的第一位,返回被删除值
arr.pop(); //删除数组的最后一位,返回被删除值
arr.splice( start1 , end3 );// 删除类 ,从开始第1个起删除到结束第3个
不包括第三个,返回删除的组成的新数组,不影响原数组。
arr.splice( 0 , 0 , ‘xuanmo’ );//添加,从第0个开始添加
arr.splice( 1 , 1 , ‘xuanmo’ ); //替换,替换掉第一个

排序

arr.sort();//数组排序,默认以字符串大小编码排序
arr.sort(function( a , b ){ return a – b });//标准排序传入比较函数,
alert( str.split('').join('-') );//字符串拆分成数组,并未没一个字符后添加一个‘-’
arr.concat( arr1 );//拼接数组,把两个或者多个数组拼接在一起
arr.reverse();//数组前后调换位置
console.log( str.split('').reverse().join('') );//利用reverse()方法将字符串换位置

数组转换成字符串

arr.join(''); //把数组变成字符串

随机排序

var arr = [0, 1, 2, 3, 4];
arr.sort( randomSort );
function randomSort(){
  return Math.random() > 0.5 ? -1 : 1;
}

数组去重

// ES5方法
function deleteArray( arr ){
  for( var i = 0; i < arr.length; i++ ){
    for( var j = i+1; j < arr.length; j++ ){
      if( arr[i] == arr[j] ){
        arr.splice(j, 1);
        j--;
      }
    }
  }
  return arr;
}

// 利用indexOf方法
function removeArrayRepeat (arr) {
  var newArr = [];
  for(var i = 0, len = arr.length; i < len; i++){
    if(newArr.indexOf(arr[i]) === -1) newArr.push(arr[i]);
  }
  return newArr;
}

// ES6方法
Array.from(new Set([1, 2, 3, 2, 5, 8, 1]))  // [1, 2, 3, 5, 8]

// 利用扩展运算符方法
[...new Set([1, 2, 3, 2, 5, 8, 1])]  // [1, 2, 3, 5, 8]

数组就是一组数据的集合,JavaScript中,数组里面的数据可以是不同类型

/*通过类实例化来创建数组*/
var aList01 = new Array(1,3,5,7);

/*通过字面量的方式*/
var aList02 = [1,2,3];

/*获取组的类成员个数*/
alert(aList02.length);

/*通过下标操作数*/
alert(aList01[2]);

/*通过push在数组后面添加成员*/
aList01.push('m');
alert(aList01);

/*从后面删除成员*/
aList01.pop();
alert(aList01);

/*从前面添加成员*/
aList01.unshift(1);
alert(aList01);

/*从前面删除成员*/
aList01.shift();
alert(aList01);

/*反转排序*/
aList01.reverse();
alert(aList01);

/*指出元素在组的位置*/
var aList03 = ['a','b','c','d'];
alert(aList03.indexOf('c'));

/*splice(起始位,删除个数,添加元素)*/
aList03.splice(1,2,'e','f');
alert(aList03);

/*join把元素连接,要用变量来接收字符串*/
var sTr = aList03.join('-');
alert(sTr);

数组遍历

1.使用for循环来遍历一个数组
let arr=[2,4,6,10];
for(let i=0;i<arr.length;i++){
console.log(arr[i]);
}
2.for-in
let arr=[2,4,6,10];
for (var index in arr){
console.log(arr[index]);
}
还可以遍历对象,得到键值对中的键
let per={
name:"zhang San",
sex:'male',
age:18
};
for(let key in per){
console.log(key);//name,sex,age
}

3.forEach
arr.forEach((item,i)=>{
console.log(item,i)
});

4.for-of(ES6中新增),效率最高,没有返回值,但可以对每一项进行处理
let arr=[3,7,9];
for (let key of arr){
console.log(key);
}

  1. map有返回值,可以对每项进行处理后,生成一个新的数组
    let res = arr.map((item,i)=>{
    return 这是第${i}个元素:${item}
    })
    let arr = temp.map(item=>{
    return parseInt(item) //把每一项转换成数字,把09变成9
    })
    基于旧的数组,生成新的数组,这是forEach做不到的

数组过滤

1.filter过滤
let arr=[1,2,3,4,5,6];
let newArr=arr.filter(o=>o%2==0);
console.log(newArr);//2 4 6
2.every和some方法,返回一个真假布尔值
every判断是不是每一个都符合条件
some判断是不是有符合条件的
let arr=[1,2,3,4,5,6];
console.log(arr.some(o=>o%3==0));//true

是否改变原数组

join(separator)
将数组的元素组起一个字符串,以separator为分隔符,
省略的话则用默认用逗号为分隔符,该方法只接收一个参数:即分隔符。

push()和pop()
push()  接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度; 
pop()   数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项。

shift() 和 unshift()
shift()  删除原数组第一项,并返回删除元素的值,  如果数组为空则返回undefined; 
unshift  将参数添加到原数组开头,并返回数组的长度 。

reverse()
//反转数组项的顺序
var arr = [1, 3, 5, 7];
console.log(arr.reverse()); //[7, 5, 3, 1]
console.log(arr); //[7, 5, 3, 1](原数组改变).

concat()
将参数添加到原数组中。这个方法会先copy一个当前数组,
然后将接收到的参数添加到这个copy数组的末尾,
最后返回新构建的数组。
在没有给 concat()方法传递参数的情况下,它只是复制当前数组并返回。

indexOf()和 lastIndexOf()
indexOf()  接收两个参数:
要查找的项和(可选的)表示查找起点位置的索引。其中, 从数组的开头(位置 0)开始向后查找。 

lastIndexOf接收两个参数:
要查找的项和(可选的)表示查找起点位置的索引。其中, 从数组的末尾开始向前查找。

这两个方法都返回要查找的项在数组中的位置,或者在没找到的情况下返回-1。

在比较第一个参数与数组中的每一项时,会使用全等操作符。

forEach()
这个方法只支持IE8以上的浏览器, 所以如果需要兼容IE8,
则不要使用forEach,  还是使用for循环来遍历

使用:
forEach()方法需要一个函数作为参数
该函数,由我们创建但是不由我们调用的,称为回调函数
数组中有几个元素, 函数就会执行几次,每次执行时,
浏览器会将遍历到的元素以实参的形式传递进来,我们可以来定义形参,来读取这些内容

浏览器会在回调函数中传递三个参数
第一个参数,就是当前正在遍历的元素
第二个参数,就是当前正在遍历的元素的索引
第三个参数,就是正在遍历的数组

格式
arr.forEach(function(value , index , obj){
  console.log(value);
});

Array.from(obj)可以把obj转换成数组来操作

上一篇 下一篇

猜你喜欢

热点阅读