资讯专栏INFORMATION COLUMN

javascript中的数组

xinhaip / 2202人阅读

摘要:例如返回是返回是的前两个参数制定了需要删除数组元素。注意一旦和确认该返回什么值它们就会停止遍历数组元素。和和方法使用指定的函数将数组元素进行组合,生成单个值。

数组是值的有序集合。每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。javascript的数组是无类型的:数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的类型。
一 创建数组

使用数组直接量是创建数组最简单的方法,在方括号中将数组元素用逗号隔开即可。例如:

    var empty = [];              // 没有元素的数组
    var arr = [1, 2, 3];         // 有5个数值得数组
    var mix = [1, true, "a"];    // 3个不同类型元素

如果省略数组直接量中的某个值,省略的元素将被赋予undefined值。例如:

    var count = [1, , 3];        // 数组有3个元素,第二个元素为undefined

调用构造函数Array()是创建数组的另一种方法。可以用三种方式:

调用时候没有参数

    var a = new Array();

调用时有一个数值参数,它指定长度:

    var a = new Array(10);

显式指定两个或多个数组元素或者数组的一个非数值元素:

    var a = new Array(5, 4, 3, " test, test");
二 数组长度

每个数组都有一个length属性,就是这个属性区别于常规的js对象。针对稠密数字,length属性值代表数组中元素的个数,其值比数组中最大的所以大1:

    [].length                  // => 0: 数组没有元素
    ["a", "b", "c"].length     // => 3: 最大的索引为2,length为3

为了维持这一原则,数组有两个特殊行为:

如果为一个数组元素赋值,它的索引i大于或等于数组长度时,length属性的值将 设置为i+1

设置length属性为一个小于当前长度非负整数n时,当前数组中那些大于或等于n的元素从中删除。

var a = [1, 2, 3, 4];
a.length = 3;    // 现在a为 [1, 2, 3]

三 数组元素的添加和删除

push()方法在数组末尾增加一个或多个元素:

    var arr = [];              // 创建一个空数组
    arr.push("a");             // 在末尾添加一个元素。arr = ["a"];

unshift()方法在数组首部插入一个元素,并且将其他元素依次移到更高的索引处:

    var arr = [1, 2 ,3];
    arr.unshift(0);          // 此时arr = [0, 1, 2, 3]

pop()方法从末尾删除一个元素,并返回被删除的元素值。
shift()方法从数组头部删除一个元素。

四 数组遍历

一般使用for循环来遍历数组元素。例如

    var arr = [1, 2, 3];
    for(var i=0, len= arr.length; i
五 数组方法

join()

Array.join()方法将数组中所有元素都转化为字符串并连接在一起,返回最后生成的字符串。如果不指定分隔符,默认使用逗号。
var a = [1, 2, 3];
a.join();         // => "1,2,3"
a.join(" ");      // => "1 2 3"
a.join("");       // => "123"
Array.join()与String.split()方法的逆向操作,后者是将字符串分割成数组。

reverse()

Array.reverse()方法将数组中的元素颠倒顺序,返回逆向数组。例如:
var a = [1, 2, 3];
a.reverse();     // => [3, 2, 1]

sort()

Array.sort()将数组中的元素排序并返回排序后的数组。当不带参数调用sort()时,数组元素以字母表顺序排序。
var arr = ["banana", "cherry", "apple"];
a.sort();                    // a = ["apple", "banana", "cherry"]
如果数组中包含undefined元素,它们会被排到数组的尾部。更多例子在index.js中。

concat()

Array.concat()创建并返回一个新数组,它的元素包括调用concat()的原始数组的元素和concat()的每个参数。如果这些参数中的任何一个自身是数组,则连接的是数组的元素,而非数组本身。
var a = [1, 2, 3];
a.concat(4,5)                    // => [1,2,3,4,5]
a.concat([4,5], [6,7]);          // => [1,2,3,4,5,6,7]

slice()

Array.sliece方法返回指定数组的一个片段或者子数组。它的两个参数分别制定了片段的开始和结束位置。返回的数组包含第一个参数指定的位置和所有到但不包含第二个参数指定位置之间的所有数组元素。如果只指定一个参数,返回的数组将包含从开始位置到数组结尾的所有元素。
var a = [1,2,3,4,5];
a.slice(0, 3);       // => [1,2,3]
a.sliece(3);         // => [4,5]

splice()

Array.splice()在数组中插入或删除元素的通用方法。第一个参数制定了插入或者删除的起始位置,第二个参数制定了应该从数组中删除的元素个数,如果省略第二个参数,从起始位置到结尾的所有元素都将被删除。返回一个由删除元素组成的数组。

例如:

var _arr = [1, 2, 3, 4, 5, 6, 7, 8];
_arr.splice(4);
console.log(_arr);
// 返回[5, 6, 7, 8];_arr是[1,2,3,4]
_arr.splice(1, 2);
console.log(_arr);
// 返回[2, 3];_arr是[1,4]
splice()的前两个参数制定了需要删除数组元素。后面的任意个数的参数指定了需要插入到数组中的元素,从第一个参数指定的位置开始插入。
var a = [1, 2, 3, 4, 5];
a.splice(2, 0 , "a", "b");               // 返回[],a = [1, 2, "a", "b", 3, 4, 5];
a.splice(2, 2, [1,2], 3);                // 返回["a","b"],a = [1,2,[1,2],3,3,4,5];
注意:区别于concat(),splice()会插入数组本身而非数组的元素。

push()和pop():

push()在数组尾部添加一个或多个元素,并返回数组新的长度。

pop()删除数组的最后一个元素,减小数组长度并返回它删除的值。

unshift()和shift()

unshift()在数组的头部添加一个或多个元素,并将已存在的元素移到更高索引的位置来获得足够的空间,最后返回数组新的长度。

shift()删除数组的第一个元素并将其返回,然后把所有随后的元素下移一个位置来填补头部的空缺。

六 ECMAScript 5中的数组方法

forEach()

从头到尾遍历数组,为每个元素调用指定的函数。使用三个参数调用该函数:数组元素、数组元素索引和数组本身。
var data = [1,2,3,4,5];
var sum = 0;
data.forEach(function(value){
sum += value;
});
console.log(sum);    // => 15

map()

将调用的数组的每个元素传递给指定的函数,并返回一个数组,它包含该函数的返回值。例如:
var a_arr = [1, 2, 3];
var b = a_arr.map(function(x){
return x*x;
})
console.log(b);  // =>b = [1, 4, 9]

filter()

filter()方法返回的数组元素是调用的数组的一个子元素。传递的函数是用来逻辑判定的:该函数返回true或false。
var a = [1,2,3,4,5];
var smalls = a.filter(function(x){
return x < 3;
});
// => smalls = [1,2]

every()和some()

every()和some()方法是数组的逻辑判定:它们对数组元素应用指定的函数进行判定,返回true或false。

every()针对数组中的所有元素调用判定函数都返回true,它才返回true。

somt()数组中只杀有一个元素调用函数判定返回true,它就返回true。

注意:一旦every()和some()确认该返回什么值它们就会停止遍历数组元素。

reduce()和reduceRight()

reduce()和reduceRight()方法使用指定的函数将数组元素进行组合,生成单个值。
var _data = [1,2,3,4,5];
var sum = _data.reduce(function (x, y) {
   return x+y;
}, 0);
// 求和 => 15
var product = a.reduce(function (x, y) {
return x*y;
}, 1);
// 求积 => 120
var max = a.reduce(function (x, y) {
   return x>y ? x : y;
});
// 求最大值 => 5
reduceRight()工作原理和reduce()一样,不同的是它按照数组索引从高到低处理数组。

indexOf()和lastIndexOf()

搜索整个数组红具有给定值的元素,返回找的第一份元素的索引或者如果没有找到就返回-1。indexOf()从头至尾搜索,lastIndexOf()则反向搜索。例如:
var a = [0, 1, 2, 1, 0];
a.indexOf(1);         // => 1
a.lastIndexOf(1);     // => 3
a.indexOf(3);         // => -1      

七 数组类型

使用Array.isArray()函数来判断是否为数组。

    Array.isArray([]);            // => true
    Array.isArray({});            // => false

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/79619.html

相关文章

  • 如何删除 JavaScript 数组中的虚值

    摘要:知道如果我们将输入数组中的每个值都转换为布尔值,就可以删除所有值为的元素,这就满足了此挑战的要求。 翻译:疯狂的技术宅https://medium.freecodecamp.o... 本文首发微信公众号:前端先锋欢迎关注,每天都给你推送新鲜的前端技术文章 引用自 MDN: falsy(虚值)是在 Boolean 上下文中已认定可转换为‘假‘的值.JavaScript 在需要用到布...

    _Zhao 评论0 收藏0
  • JavaScript中的面向对象(object-oriented)编程

    摘要:对象在中,除了数字字符串布尔值这几个简单类型外,其他的都是对象。那么在函数对象中,这两个属性的有什么区别呢表示该函数对象的原型表示使用来执行该函数时这种函数一般成为构造函数,后面会讲解,新创建的对象的原型。这时的函数通常称为构造函数。。 本文原发于我的个人博客,经多次修改后发到sf上。本文仍在不断修改中,最新版请访问个人博客。 最近工作一直在用nodejs做开发,有了nodejs,...

    JerryZou 评论0 收藏0
  • JavaScript专题系列文章

    摘要:专题系列共计篇,主要研究日常开发中一些功能点的实现,比如防抖节流去重类型判断拷贝最值扁平柯里递归乱序排序等,特点是研究专题之函数组合专题系列第十六篇,讲解函数组合,并且使用柯里化和函数组合实现模式需求我们需要写一个函数,输入,返回。 JavaScript 专题之从零实现 jQuery 的 extend JavaScritp 专题系列第七篇,讲解如何从零实现一个 jQuery 的 ext...

    Maxiye 评论0 收藏0
  • JavaScript数组

    摘要:数组的特别之处在于,当使用小于的非负整数作为属性名时数组会自动维护其属性值。返回的数组包含第一个参数指定的位置和所有到但不含第二个参数指定的位置之间的所有数组元素。数组中只需有一项满足给定条件则返回。 概念 JavaScript数组是JavaScript对象的特殊形式。数组索引实际上和碰巧是整数的属性名差不多,使用方括号访问数组元素就像用方括号访问对象的属性一样。JavaScript将...

    coolpail 评论0 收藏0
  • JavaScript中的数组

    摘要:数组数组概述数组是什么数组是值的有序集合数组中的每一个值叫做一个元素而每个元素在数组中都有一个唯一的位置这个位置用数字表示叫做索引数组用字符串表示叫做关联数组数组是无类型的数组的元素可以是任何类型例如字符串数字值布尔值等而且每个数组中的不同 数组 数组概述 数组是什么 数组是值的有序集合 数组中的每一个值叫做一个元素 而每个元素在数组中都有一个唯一的位置这个位置用数字表示 叫做索引数组...

    Genng 评论0 收藏0
  • JavaScript数组

    摘要:与稀疏数组对立的为密集数组,密集数组的索引会被持续的创建,并且其元素的数量等于其长度。创建一个长度为的数组,并初始化了个元素使用构造函数创建数组对象的时候,关键字是可以省略的。另外使用和删除元素是影响数组的长度的。 说明:本文只总结了JavaScript数组在web端的行为,不包括NodeJs端的行为。本文不涉及类型化数组(TypedArray)的讨论、总结。 一、什么是数组 数组的定...

    HtmlCssJs 评论0 收藏0

发表评论

0条评论

xinhaip

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<