JS数组相关操作

Posted 若兰明月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS数组相关操作相关的知识,希望对你有一定的参考价值。

数组的添加

var arr = [];
arr[0] = 1;
arr[1] = 2;
arr.push(3)  //  添加到末尾
arr; // [1,2,3]

arr[arr.length] = 4 // 相当于 equal to arr.push(4)
arr;  // [1,2,3,4]

arr.unshift(0)  // 在首位添加一个元素
arr; // [0,1,2,3,4]  

数组的删除

delete arr[2]
arr; // [0,1,undefined,3,4]
arr.length = 5
2 in arr // false

arr.length -= 1  // 也是移除最后一个
arr; // [0,1,undefined,3]

arr.pop() // 3 returned by pop
arr; // [0,1,undefined]  3 is removed

arr.shift() // 0 returned by shift 
arr; // [1,undefined]

数组方法

  • Array.prototype.join 数组拼接
  • Array.prototype.reverse 数组反转
  • Array.prototype.sort 排序
var arr = ['a','d','c','b']
arr.sort(); // ['a','b','c',d]

arr = [13,32,53,2]
arr.sort(); // [13,2.32,53]   原数组被修改  但是按照的是字符串进行的排序

arr.sort(function(a,b)
    return a - b
) // [2,13,32,53]

arr = [age:25,age:59,age:32]
arr.sort(function(a,b)
    return a.age - b.age
)
arr.forEach(function(item)
    console.log('age',item.age)
) // age 25  age 32  age 59
  • Array.prototype.concat
var arr = [1,2,3]
arr.contract(4,5) // [1,2,3,4,5]  会返回一个新的数组
arr // [1,2,3]   arr未被修改

arr.contract([10,11],13)  // [1,2,3,10,11,13]

arr.contract(1,[2,3]) // [1,2,3,1,[2,3]]
  • Array.prototype.slice // 返回部分数组
  • Array.prototype.splice // 数组拼接
var arr = [1,2,3,4,5]
arr.splice(2)  // returns [3,4,5]
arr; // [1,2]  原数组被修改

arr = [1,2,3,4,5]
arr.splice(2,2)  // returns [3,4]
arr[1,2,5]

arr = [1,2,3,4,5]
arr.splice(1,1,'a','b')  // returns [2]
arr;// [1,'a','b',3,4,5]
  • Array.prototype.forEach (ES5) 数组遍历 接受一个函数作为参数
var arr = [1,2,3,4,5]
arr.forEach(function(x,index,a)
    console.log(x = '|' + index + '|' + (a === arr)

// 1 | 0 | true
// 2 | 1 | true
// 3 | 2 | true
// 4 | 3 | true
// 5 | 4 | true
  • Array.prototype.map (ES5) 数组映射
var arr = [1,2,3]
arr.map(function(x)
    return x + 10
) // [11,12,13]
arr // [1,2,3]  原数组没有被修改
  • Array.prototype.fliter (ES5) 数组过滤 原数组没有被修改
  • Array.prototype.every (ES5) 数组判断 每一个都符合条件才返回true
  • Array.prototype.some (ES5) 数组判断 任意一个符合条件就返回true
  • Array.prototype.reduce/reduceRight (ES5) 一个从左开始遍历 一个从右开始遍历
var arr = [1,2,3]
var sum = arr.reduce(function(x,y)
    return x + y
,0)  // 6
arr // [1,2,3]

arr = [3,9,6]
var max = arr.reduce(function(x,y)
    console.log(x +'|' + y)
    return x > y ? x : y
)  
// 3|9
// 9|6
max ;// 9
  • Array.prototype.indexOf/lastIndexOf (ES5)
  • Array.prototype.isArray (ES5) 判断是否为数组
Array.isArray([])  true

或者以下的方式
[] instanceof Array   // true
().toString.apply([]) === '[object Array]'  // true
[].constructor === Array  // true

数组 VS 一般对象

  • 相同
    • 都可以继承,数组是对象,对象不一定是数组,都可以当做对象添加和删除属性
  • 不同
    • 数组自动更新length,按索引访问数组常常比访问一般对象属性明显迅速,数组对象继承Array.prototype上的大量数组操作方法

以上是关于JS数组相关操作的主要内容,如果未能解决你的问题,请参考以下文章

js数组的操作方法

js 操作方法

js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScrip

js中数组的操作方法

JS增删改查

js数组操作方法