JavaScript中的数组操作

在之前的一篇博客中提到了一些 JavaScript Array 对象的方法,比如 slice()、splice()、pop()、push() 等,博客链接:

http://xitongjiagoushi.blog.51cto.com/9975742/1653063

JavaScript Array还有一些常用的操作或者说技巧,比如清空数组,克隆数组等,下面来看一下。

1. 指定位置插入元素:

使用 Array.prototype.splice()不仅可以删除数组中的元素,也可以在指定位置添加元素:

var ary = [1, 2, 3, 4, 5];
ary.splice(5, 0,6);
console.log(ary); //[1, 2, 3, 4, 5, 6]

如果不介意扩展 Array.prototype,可以为其添加如下方法:

Array.prototype.insert = function(index, items) {
  if(items instanceof Array) {
    var currentIndex = index;
    for(var i = 0; i < items.length; i++) {
      this.splice(currentIndex, 0, items[i]);
      currentIndex++;
    }
  } else {
    this.splice(index, 0, items);
  }
};
ary.insert(6, 7);
console.log(ary); //[1, 2, 3, 4, 5, 6, 7]
ary.insert(7, [8,9]);
console.log(ary); //[1, 2, 3, 4, 5, 6, 7, 8, 9]


2. 清空数组:

通常我们会这样清空数组:

ary = [];
console.log(ary); //[]

但是这并不是最优的方式,因为这会创建一个对新的空数组的引用:

var ary = [1, 2, 3, 4, 5],
   newAry = ary;
//ary指向一个新的空数组
ary = []; //并不影响原数组([1, 2, 3, 4, 5])
console.log(newAry); //[1, 2, 3, 4, 5]
var ary = [1, 2, 3, 4, 5],
  newAry = ary;
//ary还是对原数组([1, 2, 3, 4, 5])的引用
ary.length = 0; //原数组被清空
console.log(newAry); //[]

通过上面的解释不难看出,最优的方式是将数组的 length 属性赋值为 0:

var ary = [1, 2,3, 4, 5];
ary.lengh = 0;
console.log(ary); //[]

注:

对 String.prototype.length 赋值并不能影响 String 的长度,这一点要和对 Array.prototype.length 赋值区分开来。


3. 数组元素排序:

Array.prototype.sort()用来排序数组,不传参时按默认规则排序,如:

[1, 3, 9,2].sort(); //[1, 2, 3, 9]
[1, “a”, function(){}, 12, “c”].sort(); //[1, 12, {}, “a”, “c”, [Function]]

如果想要定制自己的排序规则,需要传入一个有返回值的排序函数,比如想要对下面的对象数组按元素的 age 属性顺序排序:

var objAry =
[
  {name: “Lucy”, age: 28, sex: “female”},
  {name: “Tom”, age: 26, sex: “male”},
  {name: “Jordan”, age: 30, sex: “male”}
];
objAry.sort(function(obj1, obj2) {
  return obj1.age - obj2.age;
});
//排序结果
//[
//  {name: “Tom”, age: 26, sex: “male”},
//  {name: “Lucy”, age: 28, sex: “female”},
//  {name: “Jordan”, age: 30, sex: “male”}
//]


4. 克隆数组:

克隆数组?简单,for循环走起:

var ary = [1, 2, 3, 4, 5],
  newAry = [];
for(var i = 0; i< arr.length; i++) {
  newAry.push(ary[i]);
}
console.log(newAry); //[1, 2, 3, 4, 5]

完成任务,但是每次这么克隆敲键盘可是够受的了,用点高端简洁的方法:

var newAry = ary.slice(); //第一种方法
var newAry = ary.concat(); //第二种方法

简洁有效的完成任务,妈妈再也不用担心我的键盘会敲坏了。

完。

时间: 2024-10-13 14:46:03

JavaScript中的数组操作的相关文章

[记录] JavaScript 中的数组操作

1. 定义方式:    var arr = []; // 数组字面量    var arr = new Array(); // 数组构造函数 数组所有方法都来源于 Array.prototype 2. 数组的读和写:    arr[num]  // 不可以溢出读  结果undefined    arr[num] = xxx; // 可以溢出写 3. 改变原数组    push()    // 在数组最后一位添加数据,返回值是数组的长度:    模拟数组方法:    Array.prototype

JavaScript中的字符串操作

JavaScript中的字符串操作 一.概述    字符串在JavaScript中几乎无处不在,在你处理用户的输入数据的时候,在读取或设置DOM对象的属性时,在操作cookie时,当然还有更多....JavaScript的核心部分提供了一组属性和方法用于通用的字符串操作,如分割字符串,改变字符串的大小写,操作子字符串等.    当前的大部分浏览器也能从强大的正则表达式获益,因为它极大地简化了大量的字符串操作任务,不过它也需要你克服一条有些陡峭的学习曲线.在这里,主要是介绍字符串本身的一些操作,正

JavaScript中的数组详解

JavaScript中的数组 一.数组的定义 数组是值的有序集合,或者说数组都是数据的有序列表. 二.创建数组 [字面量形式] 1.空数组 var arr=[]; 2.带有元素的数组 var arr=[1,2,3,1,2]; 3.数组值可以是任意类型 var arr=[1,2.3,'foodoir',true,null,undefined,[1,2,3],{name:'foodoir',age:21}]; 注意: 1.数组字面量中的值不一定是常量,它们可以是任意表达式: 2.它可以包含对象字面量

javascript中的数组扩展(一)

 javascript中的数组扩展(一) 随着学习的深入,发现需要学习的关于数组的内容也越来越多,后面将会慢慢归纳,有的是对前面的强化,有些则是关于前面的补充. 一.数组的本质    数组是按照次序排列的一组值,本质上,数组是一种特殊的对象            console.log(typeof[1,2,3]);//object    数组是对象但是对象不是数组            var arr = ['a','b','c','d','e'];            console.lo

javascript 常用的数组操作

join() Array.join(/* optional */ separator) 将数组转换为字符串,可带一个参数 separator (分隔符,默认为","). 与之相反的一个方法是:String.splict() ,将字符串分隔成若干块来创建一个新的数组. reverse() Array.reverse(),颠倒数组元素的顺序,返回逆向的数组.注意此方法会修改原来数组元素的位置,而不是返回一个新的数组. sort() sort() 方法将数组中的元素排序并返回排序后的数组.s

前端开发:Javascript中的数组,常用方法解析

前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array是前端必修的功课.周五啦,博主的心又开始澎湃了,明儿个周末有木有,又可以愉快的玩耍了. 创建数组 创建数组的基本方式有两种,一种字面量,另一种使用构造函数创建: var arr = [1,2,3]; //字面量的形式创建数组 值与值之间用英文逗号隔开 var arr1 = new Array(1,2

JavaScript中的数组创建

JavaScript中的数组创建 数组是一个包含了对象或原始类型的有序集合.很难想象一个不使用数组的程序会是什么样. 以下是几种操作数组的方式: 初始化数组并设置初始值 通过索引访问数组元素 添加新元素 删除现有元素 本文涵盖了数组的初始化以及设置初始值的操作.在JavaScript中要做到这一点的基本方法是使用数组字面量,例如[1, 5, 8]或是数组构造器new Array (1, 5, 8). 除了手动枚举之外,JavaScript还提供了更有趣更直接的数组创建方式.让我一起看看在Java

JavaScript中对数组和数组API的认识

JavaScript中对数组和数组API的认识 一.数组概念: 数组是JavaScript中的一类特殊的对象,用一对中括号“[]”表示,用来在单个的变量中存储多个值.在数组中,每个值都有一个对应的不重复的索引值.自动匹配索引值的数组称为索引数组,自定义索引值的数组称为关联数组(又叫哈希数组).以下均研究索引数组. 二.创建数组: 使用数组之前首先都要先创建并赋值给一个变量,创建数组有两种不同的方法. 1.调用构造函数Array()创建数组,索引数组索引值都从0开始 eg:var arr=New

JavaScript中的数组的学习

JavaScript中的数组的学习 数组的长度可变,数组的长度等于所有元素索引+1 同一个数组中的元素类型可以互不相同 访问数组元素时不会产生数组越界,访问未被赋值的数组元素时该元素的值为undefined. <!DOCTYPE html> <html> <head> <script type="text/javascript"> var a = [3,5,23]; var b=[]; var c = new Array(); b[0]