PHP生活

记录生活里的一分一秒

PHP生活

记录生活里的一分一秒

javaScript数据类型:数组属性及方法

  在我们介绍javaScript数据类型的时候我们已经介绍了数组的构造方法,如果大家还不知道的话可以去阅读下。还有关于数组的方法其实有一些方法是跟javaScript字符串的方法是差不多的,大家在使用时可以进行对比下,这样我们就可以更灵活地使用这一些方法了。

  (1)javaScript数组属性

  array.length。数组的length属性总是比数组中定义的最后一个元素的下标大一。对于那些具有连续元素,而且以元素0开始的常规数组来说,属性length声明了数组中的元素个数。

  数组的length属性在用构造函数Array()创建数组时初始化。给数组添加新元素时,如果必要,将更新length的值。设置属性length的值可以改变数组的大小。如果设置的值比它的当前值小,数组将被截断,其尾部的元素将丢失。如果设置的值比它的当前值大,数组将增大,新元素被添加到数组尾部,它们的值为undefined。

  (2)javaScript数组方法

  1)array.concat(value, …)。该方法是将创建并返回一个新数组,这个数组是将所有参数都添加到array中生成的。它并不修改array。如果要进行concat()操作的参数是一个数组,那么添加的是数组中的元素,而不是数组。

  示例

  var a = [1,2,3];

  a.concat(4, 5)          //返回 [1,2,3,4,5]

  a.concat([4,5]);        //返回 [1,2,3,4,5]

  a.concat([4,5],[6,7])   //返回 [1,2,3,4,5,6,7]

  a.concat(4, [5,[6,7]])  //返回 [1,2,3,4,5,[6,7]]

  2)Array.join( )将数组元素连接起来以构建一个字符串。使用情况主要有:array.join( ) array.join(separator)。其中separator是指在返回的字符串中用于分隔数组元素的字符或字符串,它是可选的,如果省略了这个参数,用逗号作为分隔符。其返回值是—个字符串,通过把array的每个元素转换成字符串,然后把这些字符串连接起来,在两个元素之间插入separator字符串而生成。同时可以用String对象的split()方法执行相反的操作,即把一个字符串分割成数组元素。示例:

  a = new Array(1, 2, 3, “testing”);

  s = a.join(“+”);  // s 是字符串“1+2+3+testing”

  3)array.pop( )删除并返回数组的最后一个元素。方法pop()将删除array的最后一个元素,把数组长度减1,并且返回它删除的元素的值。如果数组已经为空,则pop()不改变数组,返回undefined。

  示例

  方法pop()和方法push()可以提供先进后出(FILO)栈的功能。例如:

  var stack = [];       // 栈:[]

  stack.push(1, 2);     // 栈: [1,2]      返回 2

  stack.pop(  );        // 栈: [1]        返回 2

  stack.push([4,5]);    // 栈: [1,[4,5]]  返回 2

  stack.pop(  )         // 栈: [1]        返回 [4,5]

  stack.pop(  );        // 栈: []         返回 1

  4)Array.push( )给数组添加元素。方法push()将把它的参数顺次添加到array的尾部。它直接修改array,而不是创建——个新的数组。方法push()和方法pop()用数组提供先进后出栈的功能。参阅 “Array.pop()”中的示例。

  5)Array.reverse( )颠倒数组中元素的顺序。Array对象的方法reverse()将颠倒数组中元素的顺序。它在原数组上实现这一操作,即重排指定的array的元素,但并不创建新数组。如果对array有多个引用,那么通过所有引用都可以看到数组元素的新顺序。示例:

  a = new Array(1, 2, 3);    // a[0] == 1, a[2] == 3;

  a.reverse(  );             // Now a[0] == 3, a[2] == 1;

  6)Array.shift( ) 将元素移出数组。该方法将把array的第—个元素移出数组,返回那个元素的值,并且将余下的所有元素前移一位,以填补数组头部的空缺。如果数组是空的,shift()将不进行任何操作,返回undefined。注意,该方法不创建新数组,而是直接修改原有的数组。

  方法shift()和方法Array.pop()相似,只不过它在数组头部操作,而不是在尾部操作。该方法常常和unshift()一起使用。

  7)Array.unshift(value,  )在数组头部插入一个元素。该方法是将把它的参数插入array的头部,并将已经存在的元素顺次地移到较高的下标处,以便留出空间。该方法的第一个参数将成为数组新的元素0,如果还有第二个参数,它将成为新的元素1,以此类推。注意,unshift()不创建新数组,而是直接修改原有的数组。

  8)Array.slice(start, end) 返回数组的一部分。该方法将返回数组的一部分,或者说是一个子数组。返回的数组包含从start 开始到end之间的所有元素,但是不包括end所指的元素。如果没有指定end,返回的数组包含从start开始到原数组结尾的所有元素。

  注意:该方法并不修改数组。如果想删除数组中的一段元素,应该使用方法Array.splice。如果start是负数,它声明从数组尾部开始算起的位置;如果end是负数, 从数组尾部开始算起的元素。示例:

  var a = [1,2,3,4,5];

  a.slice(0,3);    // 返回 [1,2,3]

  a.slice(3);      // 返回 [4,5]

  a.slice(1,-1);   // 返回 [2,3,4]

  a.slice(-3,-2);  // 返回 [3]; IE 4存在的Bug: 返回[1,2,3]

  9)Array.sort(orderfunc)对数组元素进行排序。其中orderfunc 用来指定按什么顺序进行排序的函数,可选。该方法将在原数组上对数组元素进行排序,即排序时不创建新的数组副本。如果调用方法sort()时没有使用参数,将按字母顺序(更为精确地说,是按照字符编码的顺序)对数组中的元素进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如果有必要的话),以便进行比较。

  如果想按照别的顺序进行排序,就必须提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数a和b,其返回值如下:

  如果根据你的评判标准,a小于b,在排序后的数组中a应该出现在b之前,就返回一个小于0的值。

  如果a等于b,就返回0。

  如果a大于b,就返回一个大于0的值。

  注意,数组中undefined的元素都排列在数组末尾。即使你提供了自定义的排序函数也是这样,因为undefined值不会被传递给你提供的orderfunc。

  示例

  下面的代码展示了如何编写按数字顺序,而不是按字母顺序对数组进行排序的比较函数:

  // 按照数字顺序排序的排序函数

  function numberorder(a, b) { return a – b; }

  a = new Array(33, 4, 1111, 222);

  a.sort(  );             // 按照字母顺序的排序结果为: 1111, 222, 33, 4

  a.sort(numberorder);    // 按照数字顺序的排序结果为: 4, 33, 222, 1111

  10)Array.splice(start, deleteCount, value, …) 插入、删除或替换数组的元素。下面我们将详细介绍下该方法中的参数,如下:

  start

  开始插入和(或)删除的数组元素的下标。

  deleteCount

  从start开始,包括start所指的元素在内要删除的元素个数。这个参数是可选的,如果没有指定它,splice()将删除从start开始到原数组结尾的所有元素。

  value, …

  要插人数组的零个或多个值,从start所指的下标处开始插入。

  该方法将删除从start开始(包括start所指的元素在内)的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。位于插入或删除的元素之后的数组元素都会被移动,以保持它们与数组其他元素的连续性。注意,虽然splice()方法与slice()方法名字相似,但作用不同,方法splice()直接修改数组。

  还有该方法的返回值是如果从array中删除了元素,返回的是含有被删除的元素的数组。但是要注意,由于存在—个bug,因此在JavaScriptl.2的Netscape实现中,返回的并不总是数组。示例:

  var a = [1,2,3,4,5,6,7,8]

  a.splice(4);        // 返回 [5,6,7,8]; a is [1,2,3,4]

  a.splice(1,2);      // 返回 [2,3]; a is [1,4,5,6,7,8]

  a.splice(1,1);      // Netscape/JavaScript 1.2 返回 4 ,应该返回 [4]

  a.splice(1,0,2,3);  // Netscape/JavaScript 1.2 返回 undefined ,应该返回 []

  注意:方法splice()假定在各种情况下均返回一个包含已删除元素的数组。但是,在 Netscape的JavaScript 1.2解释器中,如果删除的是单个元素,那么该方法返回的是元素,而不是包含那个元素的数组。如果没有删除任何元素,它不是返回一个空数组,而是什么都不返回。只要把语言版本明确地设置为1.2,JavaScript的Netscape实现都有这种bug行为。

  11)Array.toString( )将数组转换成一个字符串。数组的toString()方法将把数组转换成一个字符串,并且返回这个字符串。当数组用于字符串环境中时,JavaScript会调用这一方法将数组自动转换成一个字符串。但在某些情况下,需要明确地调用这个方法。

  toString()在把数组转换成字符串时,首先要将数组的每个元素都转换成字符串 (通过调用这些元素的toString()方法)。当每个元素都被转换成字符串时,它就以列表的形式输出这些字符串,字符串之间用逗号分隔。返回值与没有参数的join() 方法返回的字符串相同。

  关于javascript语言的一些数据类型的属性方法,希望大家能够做到熟练应用,这样我们才可以更好地创建不一样的网站状况。

javaScript数据类型:数组属性及方法

发表回复

滚动到顶部