数组常用的方法

数组在平常的coding中比较常用的数据格式,除此之外,还有字符串和对象,有时间也会来和大家分享!请动动手指关注我吧!

 

一、创建数组   x=[ ]

  var a=["333","999"];       // 直接写在[ ]中
var aa=new Array(4,8,9); // 通过实例传入Array中
var aaa=new Array(5); // 传入的5为array的个数 aaa[0]=6; // 给aaa的第0个赋值为6
console.log(aaa);
=> [6,,,,,]
console.log(aa);
=> [4,8,9]

 

二、 访问数组元素    x.[index]

  var a=["333","999"];
var b=a[0]; // 访问数组的第一个元素
var c=a[a.length-1]; // 访问数组的最后一个元素 var f=a["1"]===a[1]; // a["1"]会自动转为数字1
console.log(f);
=> true

当然,如果我们通过以下方式去访问时,会被解析成连续运算返回最后一个值
  console.log([2,3,4,5][1,2])   =>4
 
数组也是一种特殊的对象,因此我们也可以通过键值对的形式去访问
    var arr9 = [];

    arr9.say = 'Hello';

    console.log(arr9.say)    =>Hello

 

 

三、遍历数组      x.forEach(function(item,index,array){})

 es6写法   forEach((item,index)=>{dosomething.....})
 
var a=["333","999"];
a.forEach(
function (item,index,array) {
console.log(item,index)
});
//333 0 //999 1

 

四、添加元素到数组的末尾 x.push(...)

  var a=["333","999"];

  a.push("我是新元素","666");  
console.log(a); //["333","999","我是新元素","666"]
  console.log(a.push("我","690"),a.length,a); //6,["333","666","我是新元素","666","我","690"]

//返回新数组长度6,会执行一次a.push

 

五、在末尾删除数组(只能删除1个) x.pop()

   var a=["333","999"];
a.pop();
console.log(a);
=> ["333"]; 返回新数组
console.log( a.pop(),a);
=>333 [] 会执行一次a.pop(),返回本次被删除元素

 

六、删除数组最前面元素 x.shift()

 var a=["333","999"];
a.shift();
console.log(a); =>["999"]
console.log( a.shift()); =>"999"

//返回被删除元素,不会执行a.shift()

 

七、添加到数组的前面(头部) x.unshift("...")

var a=["333","999"];
a.unshift(
"000","888","777");
console.log(a);
=> ["000","888","777","333","999"]
console.log(a.unshift(
"111"),a.length,a); => ["111","000","888","777","333","999"]

//会执行一次a.unshift,返回数组长度,

 

八、找到某个元素在数组中的索引 indexOf

   var a=["333","999"];
var d=a.indexOf("333"); //通过元素查找在当前数组的索引值
console.log(d);
=>0

var e=a.indexOf("654"); //如果查不到返回-1
console.log(e); =>-1

 

九、复制数组  slice()  Array.from()  [...]

 var a=[1,2,8]; 

var newArray=a.slice();
console.log(newArray);
//第一种方法 [1,2,8]

var newArray2=Array.from(a);
console.log(newArray2);
//第二种方法 [1,2,8]

var newArray3=[...a];
console.log(newArray3);
//第三种方法 [1,2,8]

 

十、清空数组

两种方法都可以实现,但第二种比较优雅

var
arr=[1,2,3,3,4,5]; arr=
[]; console.log(arr) //[]

------------------------------------

var arr=[888,99];

arr.length=0;

console.log(arr) //[]


 

十一、合并数组 

var arr=[1];

var arr2=[2];

var arr3=[3];

var arr4=arr.concat(arr2,arr3) 

console.log(arr4)     =>[1,2,3]

---------------------------------------
下面这个方法也可以实现,但只能合并两个数组

  var arr1=[1,2,3];

   var arr2=[4,5,6];

       arr1.push.apply(arr1,arr2);

   
console.log(arr1);
 

 

十二、在数组中找到最大值和最小值

  //方法1
  var array1 = [1,2,3,4];
  var array2 = Math.max.apply(null,array1);  //最大值
var array3 = Math.min.apply(null,array1); // 最小值
console.log(array2,array3); //
=>4 ,1 //方法2 var array4 =Math.max(...array1); //最大值
var array5 =Math.min(...array1); //最小值
console.log(array4,array5); //
=>4 ,1

 

十三、判断是不是数组

   在javascript中,如何判断一个变量是否是数组

(1)Array.isArray()方法

    var a = [0, 1, 2];
console.log(Array.isArray(a));
// true (2)typeof toString 方法 由于低版本的IE不支持ES5,如需要兼容,用typeof,我们都知道,数组是特殊的对象,所以数组的typeof结果也是object,而因为null的结果也是object,所以需要加判断 是 object 同时排除 null、排除纯对象,先判断a是不是object,并且a!==null, 并且toString.call判断a等于 [object Array]
   var a = [0, 1, 2];  
  console.log( typeof a ==='object' &&  a !==null  &&  Object.prototype.toString.call(a) ==='[object Array]');   => true

 

十四、数组与其他值的运算(使用"+"会自动转为string  "-"会自动转为number)

数组和任何值相加都会将数组转换成字符串再进行拼接
console.log([
1,2,3] + 6) ; => "1,2,36" console.log([1,2,3] + {}) ; =>"1,2,3[object Object]" console.log([1,2,3] + [1,2,3]); =>"1,2,31,2,3" 如果数组只有一个值,那么当这个数组和其他值相减相乘等时会被转换为数字,如果为空会被转换为0 console.log([5] - 2) =>3

 

十五、数组去重


ES6新增的Set数据结构,类似于数组,但是里面的元素都是唯一的 ,其构造函数可以接受一个数组作为参数
let arr1
=[1,2,1,2,6,3,5,69,66,7,2,1,4,3,6,8,9663,8]
let set
= new Set(arr1);

console.log(set)
=>{1,2,6,3,5,69,66,7,4,8,9663,8]

ES6中Array新增了一个静态方法from,可以把类似数组的对象转换为数组
  var arr=[1,2,1,2,6,3,5,69,66,7,2,1,4,3,6,8,9663,8]

  console.log(Array.from( new Set(arr)))   =>{1,2,6,3,5,69,66,7,4,8,9663,8]

 

 函数去重:  
    function removeRepeatArray(arr){      return Array.from(new Set(arr))     }     console.log(removeRepeatArray([1,5,9,8,6,2,5,1,2,5,8,65,3,5,5,2,2,5]))
=>[1, 5, 9, 8, 6, 2, 65, 3]

 

posted @ 2017-10-19 16:06  晴天de雨滴  阅读(1368)  评论(0编辑  收藏  举报