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 相关文章推荐
Mootools 1.2教程 排序类和方法简介
Sep 15 Javascript
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
Jan 04 Javascript
js中将String转换为number以便比较
Jul 08 Javascript
JQuery创建DOM节点的方法
Jun 11 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
Aug 25 Javascript
浅谈javascript中的加减时间
Jul 12 Javascript
jQuery继承extend用法详解
Oct 10 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
Jan 04 Javascript
js实现瀑布流效果(自动生成新的内容)
Mar 16 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
Aug 22 Javascript
Puppet的一些技巧
Sep 17 Javascript
JavaScript实现九宫格拖拽效果
Jun 28 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
重量级动漫纷纷停播!唯独OVERLORD第四季正在英魂之刃继续更新
2020/05/06 日漫
奉献出一个封装的curl函数 便于调用(抓数据专用)
2013/07/22 PHP
PHP获取当前url的具体方法全面解析
2013/11/26 PHP
PHP入门经历和学习过程分享
2014/04/11 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
2016/04/11 PHP
yii2带搜索功能的下拉框实例详解
2016/05/12 PHP
Yii框架操作cookie与session的方法实例详解
2019/09/04 PHP
JS添加删除一组文本框并对输入信息加以验证判断其正确性
2013/04/11 Javascript
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
jQuery针对各类元素操作基础教程
2014/08/29 Javascript
jQuery通过点击行来删除HTML表格行的实现示例
2014/09/10 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
纯jquery实现模仿淘宝购物车结算
2015/08/20 Javascript
基于jQuery实现点击最后一行实现行自增效果的表格
2016/01/12 Javascript
Vue.js开发环境搭建
2016/11/10 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
详解基于Bootstrap+angular的一个豆瓣电影app
2017/06/26 Javascript
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
2018/09/03 Javascript
微信小程序实现抖音播放效果的实例代码
2020/04/11 Javascript
python正则表达式match和search用法实例
2015/03/26 Python
使用Kivy将python程序打包为apk文件
2017/07/29 Python
python将每个单词按空格分开并保存到文件中
2018/03/19 Python
TensorFlow实现简单卷积神经网络
2018/05/24 Python
新手入门Python编程的8个实用建议
2019/07/12 Python
Python脚本去除文件的只读性操作
2020/03/05 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
大三在校生电子商务求职信
2013/10/29 职场文书
小学国庆节活动方案策划书
2014/09/16 职场文书
甜品店创业计划书
2014/09/21 职场文书
2014年涉外离婚协议书范本
2014/11/20 职场文书
2015年幼儿园新年寄语
2014/12/08 职场文书
2016春季校长开学典礼致辞
2015/11/26 职场文书
Django基础CBV装饰器和中间件
2022/03/22 Python