JavaScript 中有关数组对象的方法(详解)_javascript技巧

JS 处理数组多种方法

js 中的数据类型分为两大类:原始类型和对象类型。

原始类型包括:数值、字符串、布尔值、null、undefined

对象类型包括:对象即是属性的集合,当然这里又两个特殊的对象----函数(js中的一等对象)、数组(键值的有序集合)。

数组元素的添加

arrayObj.push([item1 [item2 [. . . [itemN ]]]]);

将一个或多个新元素添加到数组结尾,并返回数组新长度

arrayObj.unshift([item1 [item2 [. . . [itemN ]]]]);

将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度

arrayObj.splice(insertPos,0,[item1[, item2[, . . . [,itemN]]]]);

将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移,返回""

数组元素的删除

arrayObj.pop();

移除最后一个元素并返回该元素值

arrayObj.shift();

移除最前一个元素并返回该元素值,数组中元素自动前移

arrayObj.splice(deletePos,deleteCount);

删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素

截取与合并

arrayObj.slice(start, [end]);

以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素

arrayObj.concat([item1[, item2[, . . . [,itemN]]]]);

将多个数组(也可以是字符串,或者是数组和字符串的混合)连接为一个数组,返回连接好的新的数组

数组的拷贝

arrayObj.slice(0);

返回数组的拷贝数组,注意是一个新的数组,不是指向

arrayObj.concat();

返回数组的拷贝数组,注意是一个新的数组,不是指向

数组元素的排序

arrayObj.reverse();

反转元素(最前的排到最后、最后的排到最前),返回数组地址

arrayObj.sort();

对数组元素排序,返回数组地址

数组元素的插入

arrayObj.splice(insertPos,0, [item1[, item2[, . . . [,itemN]]]]);

从 insertPos 位置插入指定的item元素,0代表删除0个元素,返回空数组

数组元素的替换

arrayObj.splice(insertPos,replaceCount, [item1[, item2[, . . . [,itemN]]]]);

从 insertPos 位置删除 replaceCount 个元素,再从 insertPos 位置添加指定的item元素,数组形式返回被删除的元素

数组元素的位置

arrayObj.indexOf(findThing,start);

从要查找的起点(可选) start 开始向后找要查找的项 findThing ,找的准则是全等,找到则返回该值的位置,找不到则返回-1

arrayObj.lastIndexOf(findThing,number)

从要查找的起点(可选) start 开始向前找要查找的项 findThing ,找的准则是全等,找到则返回该值的位置,找不到则返回-1

数组元素的迭代

arrayObj.every()

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

arrayObj.filter()

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

arrayObj.forEach()

对数组中的每一项运行给定的函数,这个方法没有返回值

arrayObj.map()

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

arrayObj.some()

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

数组元素的归并

arrayObj.reduce(prev, cur, index, array)

从数组的第一项开始,逐个便利到最后,四个参数分别为前一个值,当前值,项的索引和数组对象,函数返回的任何值会作为第一个参数自动传给下一项

000

arrayObj.reduceRight()

从数组的最后开始,逐个便利到第一项,四个参数分别为前一个值,当前值,项的索引和数组对象,函数返回的任何值会作为第一个参数自动传给下一项

数组元素的字符串化

arrayObj.join(separator);

返回字符串,这个字符串将数组的每一个元素值连接在一起,中间用 separator 隔开。

toLocaleString 、toString 、valueOf:可以看作是join的特殊用法,不常用

toSource() 返回该对象的源代码

toString() 把数组转换为字符串,并返回结果

toLocaleString() 把数组转换为本地数组,并返回结果

valueOf() 返回数组对象的原始值

ES5 新增

Array.prototype.indexOf

indexOf()方法返回在该数组中第一个找到的元素位置,如果它不存在则返回-1。

Array.prototype.lastIndexOf

Array.prototype.every

Array.prototype.some

Array.prototype.forEach

forEach为每个元素执行对应的方法

Array.prototype.map

map()对数组的每个元素进行一定操作(映射)后,会返回一个新的数组

map()是处理服务器返回数据时是一个非常实用的函数

Array.prototype.filter

该filter()方法创建一个新的匹配过滤条件的数组。

Array.prototype.reduce

reduce()可以实现一个累加器的功能,将数组的每个值(从左到右)将其降低到一个值

场景: 统计一个数组中有多少个不重复的单词

Array.prototype.reduceRight

时间: 2024-12-04 19:03:20

JavaScript 中有关数组对象的方法(详解)_javascript技巧的相关文章

JavaScript中关键字 in 的使用方法详解_javascript技巧

for-in循环应该用在非数组对象的遍历上,使用for-in进行循环也被称为"枚举". 对于数组 ,迭代出来的是数组元素 但不推荐,因为不能保证顺序,而且如果在Array的原型上添加了属性,这个属性也会被遍历出来,所以 最好数组使用正常的for循环,对象使用for-in循环 对于对象 ,迭代出来的是对象的属性: var obj = { "key1":"value1", "key2":"value2", &q

JavaScript中SetInterval与setTimeout的用法详解_javascript技巧

setTimeout 描述 setTimeout(code,millisec) setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式. 注:调用过程中,可以使用clearTimeout(id_of_settimeout)终止 参数 描述 code 必需,要调用的函数后要执行的 JavaScript 代码串. millisec 必需,在执行代码前需等待的毫秒数. setTimeinterval setInterval(code,millisec[,"lang"]) 参数

JavaScript中闭包的写法和作用详解_javascript技巧

1.什么是闭包 闭包是有权访问另一个函数作用域的变量的函数. 简单的说,Javascript允许使用内部函数---即函数定义和函数表达式位于另一个函数的函数体内.而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量.参数和声明的其他内部函数.当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包. 2.变量的作用域 要理解闭包,首先要理解变量的作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变

在JavaScript中对HTML进行反转义详解_javascript技巧

在JavaScript中对字符串进行转义和反转义操作,常用的方法莫过于使用encodeURI (decodeURI).encodeURIComponent (decodeURIComponent)这几个方法,具体使用方法和区别. 但是如何在JavaScript中对HTML进行反转义操作呢?例如下面这段代码: var jsonData = { title: "<%= data.name? data.name : title %>", desc: "<%= da

jQuery中deferred对象使用方法详解_javascript技巧

在jquery1.5之后的版本中,加入了一个deferred对象,也就是延迟对象,用来处理未来某一时间点发生的回调函数.同时,还改写了ajax方法,现在的ajax方法返回的是一个deferred对象. 那就来看看deferred对象的用法.1.ajax的链式回调  // ajax方法返回的是一个deferred对象,可以直接使用链式写法 $.ajax('test.json').done(function(resp){ // done 相当于success回调,其中默认的参数为success回调的

JavaScript函数的4种调用方法详解_javascript技巧

在JavaScript中,函数是一等公民,函数在JavaScript中是一个数据类型,而非像C#或其他描述性语言那样仅仅作为一个模块来使用.函数有四种调用模式,分别是:函数调用形式.方法调用形式.构造器形式.以及apply形式.这里所有的调用模式中,最主要的区别在于关键字 this 的意义,下面分别介绍这个几种调用形式. 本文主要内容: 1.分析函数的四种调用形式2.弄清楚函数中this的意义3.明确构造函对象的过程4.学会使用上下文调用函数 一.函数调用形式 函数调用形式是最常见的形式,也是最

javascript中parentNode,childNodes,children的应用详解_javascript技巧

"parentNode" 常用来获取某个元素的父节点. 把 parentNodes 理解为容器, 在容器中有个子节点     例: <div id="parent"><b id="child">My text</b></div> 在上面的代码中, 你看到把"爹"作为一个 div 容器, 该容器中有个"孩子", 就是粗体的文字部分. 如果你打算用getEleme

js/jquery解析json和数组格式的方法详解_javascript技巧

在解析之前,我们必须弄清楚几个概念:数组,关联数组以及json之间有哪些区别和联系点? 一.概念介绍1.数组 语法: ECMAScript v3规定了数组直接量的语法,JavaScript 1.2和JScript 3.0实现了它.可以把-个用逗号分隔的表达式列表放在方括号中,创建并初始化-个数组.这些表达式的值将成为数组元素.例如: var a = [1, true, 'abc']; 具体操作查看API. ps:必须方括号隔开. 2.关联数组 1.语法:var myhash= {"key1″:&

javascript中if和switch,==和===详解_javascript技巧

今天改插件BoxScroll的时候,因为if里面的条件判断多于两个,于是立马想着改写switch.改到一半,忽然记起来JSHint等代码质量检测工具中的一个要求,用===替换==,不用不可靠的强制转型.然后忽然猜想,改成switch是不是会降低效率啊?switch里面的实际判断是==还是===? 有了想法,赶紧举个栗子,好一口吃掉: var a = '5'; switch (a) { case 5: console.log('=='); break; case "5": console