JavaScript中Array的实用操作技巧分享


Posted in Javascript onSeptember 11, 2016

一、关于Array

Array的创建很灵活,可以使用Array构造函数,也可以直接创建数组“字面量”。

var arr = new Array(); //[]
var brr = Array();  //[] 两者等效

var arr = Array(3); //[]
arr.length;   //3 长度为3的空数组

var arr = Array(22,33,'qq',{}); //[22, 33, "qq", Object]
var brr = [22,33,'qq',{}];  //同上

Array是JavaScript的内置对象,是的,虽然是数组,也是一种对象!!

使用typeof判断会返回Object! 而Array.isArray方法能更精准判断其类型。

var a = [];
typeof a;   //object
Array.isArray(a); //true

二、常用方法

push()方法

push方法能添加一个或者多个元素至数组的末端,并返回被改变后的数组的长度!

注意: ①其返回的是数组的长度,而不是数组!

            ②此方法会改变原数组!!

var arr = Array(22,33,'qq',{});
arr.push('weibo');    //5
arr       //[22, 33, "qq", {}, "weibo"]

当我们想合并两个数组时需要这样使用

var a = [22,33];
var b = [44,55];

Array.prototype.push.apply(a, b)
// 或者
a.push.apply(a, b)
// 或者
a.push(44,55);   //此时的数组a = [22,33,44,55];

注意不能写成以下这样!!

a.push(b);
a;      //[22,33,[44,55]]
a.length;     // 3 !!
console.log(a);   //[22, 33, Array[2]]

直接写成a.push(b) ,会将b认为是一个元素添加到a,并不能得到理想效果!

倘若现在又两个对象数组需要合并就像如下:

var a = [
 {name: 'Stark', value: 'Ironman'},
 {name: 'Cap' , value: 'Oldman'}
];
var b = [
 {name: 'Jerry', email: 'Jerry@qq.com'},
 {name: 'Lory' , email: 'Lory@163.com'},
 {name: 'susan', email: 'susan@gmail.com'}
];
//错误写法
a.push(b);   //3
console.log(a);  //[Object, Object, Array[3]]
//正确写法
a.push.apply(a.b); //5
console.log(a);  //[Object, Object, Object, Object, Object]

pop()方法

push相反,是删除数组最后一个元素并返回这个被删除的元素:

var a = ['qq', 'weibo', 'weixin'];
a.pop();        // 'weixin'
a;         // ['qq', 'weibo']

join()方法

将数组按照相应参数分隔开,并以字符串形式返回,若空参数,则使用‘,'分隔。此方法并不会改变原数组:

var a = [1, 2, 3, 4];
a.join(' ')  // '1 2 3 4'
a.join(' | ')  // "1 | 2 | 3 | 4"
var b = a.join() // "1,2,3,4"
console.log(a); // [1, 2, 3, 4]
console.log(b); // "1,2,3,4"

concat()方法

能将多个数组合并,返回一个新的数组,但原数组不变:

var a = [22,33];
var b = [44,55];
var c = a.concat(b);
console.log(a);  //[22, 33]
console.log(b);  //[44, 55]
console.log(c);  //[22, 33, 44, 55]
var a = [{name: 'tom', email: 'tom@example.com'},
   {name: 'peter', email: 'peter@163.com'}];
var b = [{name: 'Jerry', email: 'Jerry@qq.com'},
   {name: 'Lory', email: 'Lory@dfl.com'},
   {name: 'susan', value: 'susan@gmail.com'}];
var c = a.concat(b);
c;   // [{name: 'tom', email: 'tom@example.com'},
   // {name: 'peter', email: 'peter@163.com'},
   // {name: 'Jerry', email: 'Jerry@qq.com'},
   // {name: 'Lory', email: 'Lory@dfl.com'},
   // {name: 'susan', value: 'susan@gmail.com'}]

map()方法

map方法会对数组的各个成员依次调用一个函数,返回一个经函数处理后的新数组,但原数组并不会被改变!

var numbers = [1, 2, 3];
var num  = numbers.map(function (n) {  // [2, 4, 6]
     return n * 2;
    });
numbers;          //[1,2,3]

map方法调用的函数的参数为一个时,此参数表示数组的当前成员;当参数为三个是依次为

当前成员elem,索引index,原数组本身arr

var brr = [1, 2, 3].map( function(elem, index, arr) {
 return elem * index;
});
brr; // [0, 2, 6]

map方法还可以接受第二个参数,表示回调函数执行时this所指向的对象。

var arr = ['a', 'b', 'c'];

var brr = [0, 2].map(function(e){
 return this[e];
}, arr)
brr; // ['a', 'c']

在应用中,有时使用ajax技术需要动态利用参数数组转换成一个url请求时,map方法会非常方便,例如:

var b = [
 {name: 'Jerry', email: 'Jerry@qq.com'},
 {name: 'Lory', email: 'Lory@dfl.com'},
 {name: 'susan', value: 'susan@gmail.com'}];
 
var url = b.
   map(function(n){
    return n.name + "=" + n.email
   })
   .join("&");
   
console.log(url); 
   //Jerry=Jerry@qq.com&Lory=Lory@dfl.com&susan=susan@gmail.com

然后在url前面加上ip地址以及action和方法,就能完成一个ajax所需的动态url的拼接,例如:

var endURL = "localhost:8080/XXXX/" + eventAction + "!" + operation + "?"
    + url;

总结

以上就是这篇文章的全部内容,希望对能大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
用javascript实现读取txt文档的脚本
Jul 20 Javascript
JS在IE和FF下attachEvent,addEventListener学习笔记
Nov 26 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
Oct 16 Javascript
60个很实用的jQuery代码开发技巧收集
Dec 15 Javascript
讲解JavaScript中for...in语句的使用方法
Jun 03 Javascript
Prototype框架详解
Nov 25 Javascript
JS hashMap实例详解
May 26 Javascript
BootStrap实现手机端轮播图左右滑动事件
Oct 13 Javascript
node简单实现一个更改头像功能的示例
Dec 29 Javascript
微信小程序版翻牌小游戏
Jan 26 Javascript
解析vue路由异步组件和懒加载案例
Jun 08 Javascript
一个手写的vue放大镜效果
Aug 09 Javascript
JS实现六边形3D拖拽翻转效果的方法
Sep 11 #Javascript
最全面的百度地图JavaScript离线版开发
Sep 10 #Javascript
简单分析javascript中的函数
Sep 10 #Javascript
javascript数组常用方法汇总
Sep 10 #Javascript
JavaScript实现输入框与清空按钮联动效果
Sep 09 #Javascript
Three.js快速入门教程
Sep 09 #Javascript
jQuery动态修改字体大小的方法【测试可用】
Sep 09 #Javascript
You might like
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
php使用curl抓取qq空间的访客信息示例
2014/02/28 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
2015/07/03 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
js活用事件触发对象动作
2008/08/10 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
jquery图片滚动放大代码分享(2)
2015/08/28 Javascript
纯javascript移动优先的幻灯片效果
2015/11/02 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
2016/06/07 Javascript
js常用的继承--组合式继承
2017/03/06 Javascript
React入门教程之Hello World以及环境搭建详解
2017/07/11 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
微信小程序开发之自定义tabBar的实现
2018/09/06 Javascript
TypeScript之调用栈的实现
2019/12/31 Javascript
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
自己使用总结Python程序代码片段
2015/06/02 Python
利用python实现数据分析
2017/01/11 Python
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
python 对字典按照value进行排序的方法
2019/05/09 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
python多线程使用方法实例详解
2019/12/30 Python
解决python -m pip install --upgrade pip 升级不成功问题
2020/03/05 Python
Python实现RabbitMQ6种消息模型的示例代码
2020/03/30 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
快速一键生成Python爬虫请求头
2021/03/04 Python
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
购买一个高级域名:BuyDomains
2018/03/11 全球购物
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
在校大学生的职业生涯规划书
2014/03/14 职场文书
正风肃纪查摆剖析材料
2014/10/10 职场文书
学校实习推荐信
2015/03/27 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
道歉信怎么写
2015/05/12 职场文书
解决Laravel使用验证时跳转到首页的问题
2021/11/17 PHP
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
2022/04/20 MySQL