所有对象都具有toString(),toLocaleString(),valueOf()方法。

1.数组转化为字符串

toString(),toLocaleString() ,数组调用这些方法,则返回由数组每项字符串形式拼接而成的、以逗号分隔的字符串。实际上,为了创建这个字符串,会调用数组的每一项的toString()方法。

valueOf() 返回对象的原始值。

var color = ["red","green","blue"];
console.log( color.toString());//red,green,blue
console.log( color.toLocaleString());//red,green,blue
console.log(color.valueOf());//["red", "green", "blue"]

join()函数,接收一个分隔符的参数,将拼接成以分隔符连接的字符串。

console.log(color.join("|"));// red|green|blue

注:alert()函数接收的参数必须是字符串,如果参数不是字符串,比如说是对象,则在后台默认调用参数的toString()方法。


2.数组元素的添加与删除

push()向数组最后一位添加元素,返回添加后的数组的长度

pop() 删除数组最后一位元素,返回删除的项

shift() 删除数组首位元素,返回删除的项

unshift() 向数组首位添加元素,返回添加后的长度。


3.数组重排序方法

reverse() 翻转数组项的顺序;如:

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

sort() 数组排序。在后台会调用数组中的每一项的 toString()方法,先转换为字符串,然后再比较。按照从小到大排序。如:

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

可能上面并没有得到我们想要的结果,我们可能想要按照数字大小来排序的。

那么可以给sort()函数传递一个比较函数作为参数,比较函数接受两个参数,

如果参数1大于参数2,则返回一个正数;

如果参数1小于参数2,则返回一个负数;

如果参数1等于参数2,则返回0;

如:

function compare(value1,value2){
if(value1 > value2){
return 1;
}else if(value1 == value2){
return 0;
}else{
return -1;
}
}
console.log(values.sort(compare));//[0, 1, 5, 10, 15]

上面compare()函数,也可以改写如下,执行跟上面一样:

function compare(value1,value2){
return (value1 - value2);
}

4. 数组和字符串的方法

concat();向数组末尾添加新的元素。如果是字符串调用这个方法,则是向字符串末尾拼接新的字符串。

slice();截取数组中的某些项。如果是字符串调用这个方法,则是截取字符串中的某些字符。可接受两个参数。

splice(); 修改数组中的某些项。详细请见:MDN的网站上的手册:Array.prototype.splice()

indexOf();查找数组中的某项元素第一次出现在数组中的位置 。接受两个参数,即要查找的项,和查找起点位置的索引。

lastIndexOf();类似于indexOf(),但是它是从数组的末尾查找。字符串也有这两个查找元素的方法。都返回元素在数组或者字符串中的位置的索引,如果没有找到,则返回-1。

下面看一个容易出错的小例子:

var person = {name: "Nicholas"}; //这是一个对象
var people = [{name: "Nicholas"}]; // 这是一个数组,包含一个元素,且这个元素是对象
var morePeople = [person];//这是一个数组,包含一个元素,且这个元素也是一个对象
console.log(people.indexOf(person));// -1
console.log(morePeople.indexOf(person)); // 0

为什么第一个语句打印出-1呢,那么说明 people 这个数组里面不包含person这个对象,原因在此:

console.log(people[0] == person);//false 不属于同一个对象

说明 people 数组里面的那个对象元素跟person这个对象并不是同一个对象,虽然内容都一样。后面会讲到面向对象,你将会理解为什么看似内容一样,但是为什么他们并不是同一个对象。

这几个数组与字符串的方法,都是基于他们的副本操作的,也就是说,不影响原来操作的变量。


5.数组的迭代方法

数组的迭代,用我自己的话说就是数组的遍历,即遍历数组的每一项,去执行某些操作。

ES5中为数组定义了5个迭代方法。都接受两个参数,第一个参数:数组中每一项要执行的函数;第二个参数可选:执行该函数的作用域,影响this的值。

作为第一个参数的函数,接受三个参数:数组项的值、该项在数组中的位置、数组对象本身。

every();对数组中每一项都执行函数,如果每一项返回true,则返回true;(返回布尔值)

some();……………………………………. ,如果有一项返回true,则返回true;(返回布尔值)

filter();………………………………………  ,返回 true 项组成的数组(返回数组)

map();……………………………………… .,返回所有项组成的数组(返回数组)

forEach();……………………………………,没有返回值

var numbers = [0,1,5,10,15];

var resultNumbers = numbers.every(function(item,index,numbers){
return (item > 5);
});
console.log(resultNumbers);// false; var resultNumbers2 = numbers.some(function(item,index,numbers){
return (item > 5);
});
console.log(resultNumbers2);// true; var resultNumbers3 = numbers.filter(function(item,index,numbers){
return (item > 5);
});
console.log(resultNumbers3);// [10, 15]; var resultNumbers4 = numbers.map(function(item,index,numbers){
return (item * 2);
});
console.log(resultNumbers4);// [0, 2, 10, 20, 30] var resultNumbers5 = numbers.forEach(function(item,index,numbers){
return (item * 2);
});
console.log(resultNumbers5);// undefined 因为没有返回值,所以,即使你return,也会打印出 undefined;

6.数组的归并方法

reduce(),reduceRight()。迭代数组的所有的项,最终返回一个值。详细见:MDN 的Array.prototype.reduce()

更详细的关于数组的操作方法,后面会更新补充。

原文链接:http://www.1024idea.com/archives/358

5.2 Array类型的方法汇总的更多相关文章

  1. array类型的方法

    var arr1 = [12,454,'dafda','feagfag',23]; var arr2 = [46468,'ffwfe','dafs','dfsfs']; arr1.indexOf('d ...

  2. 浅谈 JavaScript 中 Array 类型的方法使用

    前言:Array 类型是 JavaScript 中除了 Object 类型以外最常用的类型. 一.创建数组 JavaScript 中的数组与其他语言中的数组有着很大的区别.例如Java.PHP等语言中 ...

  3. Array类型和方法

    var ft = new Array(); var ft = new Array(20); var ft = new Array("1","2","3 ...

  4. Python学习笔记:List类型所有方法汇总

    ###############################红色标红的部分为常用方法############################### import copy names = [&quo ...

  5. Python学习笔记:String类型所有方法汇总

    # 按字母表熟悉下string中的方法# A B C D E F G H I J K L M N O P Q R S T U V W X Y Z# 标红的为常用重点的方法!! str = " ...

  6. Python学习笔记:set集合类型所有方法汇总

    ################################################## 集合的作用是:# 1.获得两个集合之间某种关系的集合(比如求两个集合的交集)# 2.计算集合之间的 ...

  7. 如何判断一个变量是数组Array类型

    在很多时候,我们都需要对一个变量进行数组类型的判断.JavaScript中如何判断一个变量是数组Array类型呢?我最近研究了一下,并分享给大家,希望能对大家有所帮助. JavaScript中检测对象 ...

  8. JavaScript中Array类型方法总结

    Array类型是ECMAScript中最常用的类型之一,ECMAScript中的数组与其他多数语言中的数组有着相当大的区别.ECMAScript数组的每一项可以保存任何类型的数据.这里总结了数组类型的 ...

  9. 总结Array类型中常用的方法

    Array类型应该是 ECMAScript 中最常用的类型之一了,并且它定义的数组与其他语言有着相当大的区别.数组是数据的有序集合,我们可以通过下标对指定位置的数据进行读 写:特别的是,在 ECMAS ...

随机推荐

  1. CSS的未来

    仅供参考 前言 完成<CSS核心技术与实战>这本书,已有一个多月了,而这篇文章原本是打算写在那本书里面的,但本章讲解的内容,毕竟属于CSS未来的范畴,而这一切都还不能够确定下来,所以这一章 ...

  2. Web APi之认证(Authentication)两种实现方式【二】(十三)

    前言 上一节我们详细讲解了认证及其基本信息,这一节我们通过两种不同方式来实现认证,并且分析如何合理的利用这两种方式,文中涉及到的基础知识,请参看上一篇文中,就不再叙述废话. 序言 对于所谓的认证说到底 ...

  3. 13、零配置Struts2开发

    Convention 插件 从 Struts 2.1 开始, Struts 可以使用 Convention 插件来支持零配置: Convention 插件完全抛弃配置信息, 不仅不需要使用 strut ...

  4. C#多线程之线程池篇1

    在C#多线程之线程池篇中,我们将学习多线程访问共享资源的一些通用的技术,我们将学习到以下知识点: 在线程池中调用委托 在线程池中执行异步操作 线程池和并行度 实现取消选项 使用等待句柄和超时 使用计时 ...

  5. vue.js初探

    前言 入手2016最火前端框架之一vue.js.大概从网上找了些资料看了下vue.js,从网上的资料来看只能惊叹其发展速度太快,让我意外的是其作者是华人的前提下作品这么受欢迎. 网上的博客和教程各种组 ...

  6. JavaScript学习笔记(二)——闭包、IIFE、apply、函数与对象

    一.闭包(Closure) 1.1.闭包相关的问题 请在页面中放10个div,每个div中放入字母a-j,当点击每一个div时显示索引号,如第1个div显示0,第10个显示9:方法:找到所有的div, ...

  7. 张小龙宣布微信小程序1月9日发布,并回答了大家最关心的8个问题

    2016 年 12 月 28 日,张小龙在微信公开课 PRO 版的会场上,宣布了微信小程序的正式发布时间. 微信小程序将于 2017 年 1 月 9 号正式上线. 同时他解释称,小程序就像PC时代的网 ...

  8. iOS之开发中常用的颜色及其对应的RGB值

      R G B 值   R G B 值   R G B 值 黑色 0 0 0 #000000 黄色 255 255 0 #FFFF00 浅灰蓝色 176 224 230 #B0E0E6 象牙黑 41 ...

  9. sql 删除表中的重复记录

    嗯,遇见了表中存在重复的记录的问题,直接写sql删除时最快的,才不要慢慢的复制到excel表中慢慢的人工找呢.哼. 如下sql,找出重复的记录,和重复记录中ID值最小的记录(表中ID为自增长) sel ...

  10. nginx安装

    nginx工作模式-->1个master+n个worker进程 安装nginx的所需pcre库[用于支持rewrite模块] 下载软件方法: 搜索 pcre  download 网址:http: ...