美文网首页
很详细的数组基本操作-整理

很详细的数组基本操作-整理

作者: 沧澈 | 来源:发表于2019-01-09 14:44 被阅读0次
  • push

可以接收任意数量的参数,把他们逐个添加到数组的末尾,并返回修改后数组的长度

  • pop

从数组末尾移除最后一项,减少数组的length值,然后返回移除的项

var color = new Array();
var count = color.push('red', 'green');
console.log(count); //2

var item = color.pop();
console.log(item); // green
console.log(color.length); //1
  • shift

移除数组中的第一项并返回该项,同时将数组长度减1

var color = new Array();
var count = color.push('red', 'green');
console.log(count); //2

var item = color.shift();
console.log(item); // red
console.log(color.length); //1
  • unshift

在数组的前端添加任意个项并返回新的数组的长度

var color = new Array();
var count = color.unshift('red', 'green');
console.log(count); //2

var item = color.pop();
console.log(item); // green
console.log(color.length); //1
  • reverse

反转数组项的顺序。

var value = [1, 2, 3, 4, 5];
value.reverse();
console.log(value);  // [5,4,3,2,1]
  • sort

在默认情况下,sort方法按照升序排列数组项,即最小的值位于最前面,最大的排在最后面。为了实现排序,sort方法会调用每个数组项的toString转型方法,然后比较得到的字符串,以确定如何排序。即使数组中每一项都是数值,sort方法比较的也是字符串。

var value1 = [0, 1, 5, 10, 15];
value1.sort();
console.log(value1);  // [ 0, 1, 10, 15, 5]

数值5虽然小于10,但是进行字符串比较时,‘10’则位于‘5’的前面,于是数组的顺序就被修改了。

**因此sort方法可以接收一个比较函数作为参数。

sort详解请看: 数组的sort方法详解

  • concat

基于当前数组中的所有项创建一个新数组。具体来说,这个方法会先创建一个当前数组的副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。
(1)在没有给从concat传递参数的情况下,它只是复制当前数组并返回副本。
(2)如果传给concat的是一或多个数组,该方法会将这些数组中的每一项都添加到结果数组中。
(3)如果传递的值不是数组,这些值就会简单的添加到结果数组的末尾。
注意:concat不会影响原始数组

var color1=['red','yellow','blue'];
var color2=color1.concat('green',['black','brown']);
console.log(color1); //[ 'red', 'yellow', 'blue' ]
console.log(color2); // [ 'red', 'yellow', 'blue', 'green', 'black', 'brown' ]
  • slice

基于数组中的一或多个项创建一个新数组。接收一个或者两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下,返回从该参数指定位置到当前参数末尾的所有项。如果有两个参数,返回起始和结束位置之间的项,但是不包括结束位置的项。
注意:slice不会影响原始数组

var color3 = ['red', 'yellow', 'blue', 'purple'];
var colorsp1 = color3.slice(1);
var colorsp2 = color3.slice(1, 4);
console.log(color3);  //[ 'red', 'yellow', 'blue', 'purple' ]
console.log(colorsp1);  // [ 'yellow', 'blue', 'purple' ]
console.log(colorsp2);  // [ 'yellow', 'blue', 'purple' ]
  • splice

(1)删除:提供两个参数,要删除第一项的位置和要删除的项数
(2)插入:提供三个参数,起始位置、0(要删除的项数)、要插入的项,如果要插入多个项,可以再传入第四,第五个以至多个参数
(3)替换:提供三个参数,起始位置、要删除的项数和要插入的任意项,插入的项数和删除的项数不必相等。
splice始终都会返回一个数组,该数组中包含从原始数组中删除的项,如果没有删除项,返回空数组。

var colors = ['red', 'green', 'blue'];
var removed = colors.splice(0, 1);
console.log(colors); //[ 'green', 'blue' ]
console.log(removed); //[ 'red' ]

removed = colors.splice(1, 0, 'yellow', 'orange');
console.log(colors); //[ 'green', 'yellow', 'orange', 'blue' ]
console.log(removed); //[]

removed = colors.splice(1, 1, 'purple', 'pink');
console.log(colors); //[ 'green', 'purple', 'pink', 'orange', 'blue' ]
console.log(removed); //[ 'yellow' ]
  • indexOf和lastIndexOf

这两个方法都接收两个参数,要查找的项数和表示查找起点位置的索引。indexOf从数组的开头开始向后查找,lastIndexOf从数组的开头向前查找。都返回要查找的项在数组中的位置,在没找到的情况下返回-1。

var numbers = [1, 2, 3, 4, 5, 6, 7];
console.log(numbers.indexOf(4)); //3
console.log(numbers.lastIndexOf(4)); //3

ECMAScript定义了5个数组迭代的方法,每个方法都接收两个参数,要在每一项上运行的函数和运行该函数的作用域对象--影响this的值。传入这些方法的函数会接收三个参数,数组的项的值、该项在数组中的位置和数组对象本身。

  • every

对数组中的每一项运行给定函数,如果该函数的每一项都返回true,则返回true。

  • filter

对数组中的每一项运行给定函数,返回该函数会返回true的项的组成的数组。

  • forEach

对数组中的每一项运行给定函数,没有返回值。

  • map

对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。

  • some

对数组中的每一项运行给定函数,如果该函数的任一项都返回true,则返回true。

var number = [1, 2, 3, 4, 5, 4, 3, 2, 1];
var everyRes = number.every(function (item, index, array) {
    return (item > 2);
})
console.log(everyRes); // false

var someRes = number.some(function (item, index, array) {
    return (item > 2);
})
console.log(someRes);  //true

var filterRes = number.filter(function (item, index, array) {
    return (item > 2);
})
console.log(filterRes);  //[ 3, 4, 5, 4, 3 ]

var mapRes = number.map(function (item, index, array) {
    return item * 2;
})
console.log(mapRes);  //[ 2, 4, 6, 8, 10, 8, 6, 4, 2 ]

number.forEach(function (item, index, array) {
    // 执行某些操作
})
  • reduce和reduceRight

缩小数组。迭代数组的所有项,然后构件一个最终返回的值。reduce方法从数组的第一项开始,逐个遍历到最后,reduceRight从数组的最后一项开始,向前遍历到第一项。
都接收两个参数,一个在每一项上调用的函数和作为缩小基础的初始值(可选)。传给reduce和reduceRight的函数接收四个参数,前一个值,当前值,项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项,第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。

var values = [1, 2, 3, 4, 5];
var sum = values.reduce(function (prev, cur, index, array) {
    return prev + cur;
})
console.log(sum); //15

除方向外,reduce和reduceRight完全相同。

参考:《javaScript高级程序设计》

相关文章

  • 很详细的数组基本操作-整理

    push 可以接收任意数量的参数,把他们逐个添加到数组的末尾,并返回修改后数组的长度。 pop 从数组末尾移除最后...

  • php之数组

    整理了一份PHP开发中数组操作大全,包含有数组操作的基本函数、数组的分段和填充、数组与栈、数组与列队、回调函数、排...

  • 2. Numpy使用

    numpy的基本操作 生成数组 数组的基本操作 数组的运算 数组间的运算

  • PHP常用数组函数

    PHP数组常用函数分类整理 一、数组操作的基本函数 数组的键名和值 array_values($arr); 获得数...

  • PHP开发中(Array)数组函数大全

    最近开发项目用到数组的切割,排序等功能,想了一下,整理了一份PHP开发中数组操作大全,包含有数组操作的基本函数、数...

  • Java数组:针对数组(Array)的各种操作

    参见这篇教程,较为详细Java数组:针对数组(Array)的各种操作

  • 迟到的Swift入门 - 数组操作

    Swift数组操作 1. 数组的日常操作 1.0 声明数组 初始化空数组 初始化默认值的数组 2. 数组基本操作 ...

  • 数组基本操作

    Array 定义空Array Array赋值 元素判断与获取 遍历Array for in 与 forEach的区...

  • 数组的基本操作

    有几个中括号就是几维数组,这么定义var a[5][5] int,给多维数组赋值的时候这样 //var test ...

  • 数组的基本操作

    遍历数组 例题 创建类Trap 创建类Tautog 填充替换数组元素 1.fill(int[] a,int val...

网友评论

      本文标题:很详细的数组基本操作-整理

      本文链接:https://www.haomeiwen.com/subject/swqwrqtx.html