JavaScript中 Object和Array对象

引用类型:是一种数据结构,用于将数据和功能组织在一起。

5.1 Object——对象类型!

创建Object实例,第一种方法:使用new操作符后跟Object构造函数

1 1 var person = new Object();
2 2 person.name = "张三";3 person.age = "30";

第二种方法:字面量表示方法

var person = {
      name = "张三",
      age = 3
};  //注意:属性名也可以使用字符串 :"name" = "张三";

5.2 数组 Array 类型

ECMAScript 数组的每一项可以保存任何类型的数据,且数组的大小是可以动态调整的。

创建数组:

//第一种方法

var  arr = new Array(); // 创建一个数组 arr
var  colors = new Array(10);//创建一个长度为10 的数组
var  num = new Array(1,2,3);//创建一个有三个项的 数组[1,2,3]

//第二种方法 数组字面量表示
var colors = ["red","blue","green"];
var food = [];    //一个空数组

var  sum =[1,2,];   //最好不这样创建,会创建一个包含2或3项的数组,ie8及以下中算3项。

在读取和设置数组的值时,要使用方括号并提供相应的值基于0的数字索引,数组的项数保存在其length属性中!

var num = [3,4,12,35,68,1];

alert(num[1]);   // 显示第二项

alert(num[0]); // 显示第一项

alert(num.length);//   6

5.2.1 检测数组

var value = [1,2,3]

//ECMAScript3  规定,此方法假定直只有一个全局执行环境!

if (value instanceof Array){
     //对数组执行某些操作
}

//ECMAScript 5 新增 Array.isArray()方法

if(Array.isArray(value)){

  // 对数组执行某些操作
}  

5.2.2 转换方法

  所有对象都具有toLocalString(),toString(),valueOf()方法,其中调用数组的toString()方法返回数组中每个值得字符串形式拼接而成的一个以逗号分割的字符串。而valueOf()返回的还是数组。其中:alert()要接收字符串参数,所以会在后台调用toString()方法!!

var colors = ["red","blue","green"];

alert(colors.toString());       //  red,blue,green

alert(colors.valueOf());       //  red,blue,green

alert(colors);                     //  red,blue,green

  数组继承的toLocaleString()、toString()和valueOf()方法,在默认情况下都会以逗号分隔的字符串的形式返回数组!

join()方法重现了toString()方法的输出。如:

var colors = ["red","green","blue"];

alert(colors.join(","));     //输出 red,blue,green

alert(colors.join("||"));    //输出 red||blue||green

5.2.3 数组方法

  1. push()方法可以接收任意数量的参数,把他们逐个添加到数组的末尾,并返回修改后数组的长度!
  2. pop()方法从数组的末尾移除最后一项,减少数组的length值,并返回被移除的项!

    var num =[3,4,5,1,2];
        var count = num.push(5,7,8,10); //接收 push方法后返回的数组的长度
        alert(count);  //  9 
    
        var remove = num.pop(); //接收pop方法返回的被移除的项
        alert(remove);  // 10
  3. shift()方法从数组的顶端移除项,并返回该项!
  4. unshift()方法从数组的顶端添加任意个项并返回数组的长度!

    var  num = [1,2,3];
    
    var count = num.unshift(0);
    
    alert(count);
    
    var remove = num.shift();
    
    alert(remove);
  5. reverse()方法会反转数组项的顺序

    1 var values = [1,2,3,4,5];
    2
    3 values.reverse(); //反转数组排序
    4
    5 alert(values);
    1. sort()方法按升序排序数组项——即最小值位于最前面,最大的值排在最后面。(按字符串记性对比)!

      var sum = [0,1,5,10,15];
      //sort()方法会调用每个数组项的toString()转型方法,然后比较得道的字符串
      sum.sort();
      
      alert(num); // 0,1,10,15,5

      sort()接收一个比较函数作为参数。比较函数接收两个参数,如果一个参数应该位于第二个之前,则返回一个负数,如果相等返回 0 ,如果第一个参数应该位于第二个之后则返回一个正数!

      function compare(value1, value2) {
          if (value1 < value2) {
          return 1;
      } else if (value1 > value2) {
          return -1;
      } else {
          return 0;
      }
      }
      var values = [0, 1, 5, 10, 15];
      values.sort(compare);
      alert(values); // 15,10,5,1,0    
      
      //更简单的方法 
      
      var num = [0, 1, 5, 10, 15];num.sort(function(a,b){  return a-b;});alert(num);
       
  6. concat()方法可以基于当前数组中的所有项创建一个新的数组,具体来说,这个方法会创建当前数组的一个副本,然后将接收到的参数添加到这个副本的末尾!

    //两个数组合并成一个新的数组
    var alpha = [a,b,c];
    
    var numeric = [1,2,3];
    
    var alphaNumeric = alpha.concat(numeric);//a,b,c,1,2,3 
    
    //三个数组和非数组值合并成一个新数组
    var num1 = [1,2];
    var num2 = [3,4];
    var num3 = [5,6];
    
    var nums = num1.concat(num2,num3,7);
    alert(nums);
  7. splice()方法算是最强大的数组方法了,主要用途是向数组的中部插入项,有下列三种方,
    1、删除:可以删除任意项,只需指定 2 个参数:要删除的第一项的位置和 要删除的项数
         例如splice(0,2)会删除数组中的前两项
    2、插入:可以向指定位置插入任意数量的项。只需提供3个参数:起始位置、0(既要删除的项      数)和要插入的项,如果要插入多个项,可以再传入第四、第五个以至任意多个项,如            splice(2,0,"red","green")会从当前数组的位置2开始插入字符串“red”和“green”!
    3、替换:可以向指定位置插入任意数量的项同时删除任意数量的项!三个参数 :起始位置,要     删除的项数和要插入的任意数量的项,如splice (2,1,"red","green")会删除当前数组位置2       的项,然后再从位置2 开始插入字符串“red”和“green”

    splice的返回值由被删除的元素组成的一个数组。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。

    
    

    var num = [1,2,3,4,,5,6,7];

    var removed = num.splice(2,1,8,9,10);//从起始位置为2开始 删除 1 项,并添加8,9,10项

    console.log(num);  // [1, 2, 8, 9, 10, 4, 7: 5, 8: 6, 9: 7]

    console.log(removed); //[3]

     
  8. indexOf()和lastIndexOf()是ECMA 5 中添加的两个位置方法,这两个方法都接收两个参数:要查找的项和表示查找的起点位置的索引。indexOf()从数组头开始向后查找,lastIndexOf()从数组末尾开始向前查找!且必须严格相等!
    返回值:返回要查找的项在数组中的位置,或者没找到的情况下返回  - 1;

    var numbers = [1,2,3,4,5,4,3,2,1];
    console.log(numbers.indexOf(4)); // 3
    console.log(numbers.lastIndexOf(4)); // 5
    console.log(numbers.indexOf(4,4));  //   5
    console.log(numbers.lastIndexOf(4,4));   // 3
    console.log(numbers.indexOf(6));    // -1 
  9. every():对数组中的每一项裕兴给定函数,如果该函数对每一项都返回true,则返回true。不会改变原数组。

    var passed = [12,5,8,44,130];
    console.log(passed.every(function(item,index,array){
        return item>10;
    }));   //false
    var passed = [12,5,8,44,130];
    console.log(passed.every(function(item){
        return item>3;
    }));   //true 
  10. filter() :对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。

    var numbers = [1,2,3,4,5,4,3,2,1];
    var result = numbers.filter(function(item){
        return item > 3;
    });
    console.log(result);  //[4, 5, 4]
  11. forEach():对数组中的每一项运行给定函数。没有返回值

    function logArrayElements(element,index,array){
        console.log("a["+index+"]="+element);
    }
    [2,3,45,56].forEach(logArrayElements);
    //a[0]=2
    // a[1]=3
    //a[2]=45
    //a[3]=56
  12. mab():对数组中每一项运行给定函数,返回每次调用的结果组成的数组。

    var numbers = [1,2,3,4,5,4,3,2,1];
    var mapResult = numbers.map(function(item, index, array){
    return item * 2;
    });
    alert(mapResult); //[2,4,6,8,10,8,6,4,2]
  13. some():对数组中的每一项运行给定函数,如果该函数对任意一项返回true,则返回true.

    function isBigEnough(element, index, array) {
      return (element >= 10);
    }
    var passed = [2, 5, 8, 1, 4].some(isBigEnough);
    // passed is false
    passed = [12, 5, 8, 1, 4].some(isBigEnough);
    // passed is true
  14. reduce()和reduceRight(),归并数组的方法,都会迭代数组的所有项,然后构建一个最终返回值。reduce()从数组第一项开始,reduceRight()从数组的最后一项开始,遍历每一项!
    接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。
    函数接收四个参数:前一个值、当前值、项的索引和数组的对象!这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发上在数组的第二项上,因此第一个参数事数组的第一项,第二个参数是数组的第二项!

    var values = [1,2,3,4,5];
    var sum = values.reduce(function(prev,cur,index,array){
        return prev+cur;
    },10);
    console.log(sum);  //25

注意:这些方法中,every()、filter()、forEach() 、map()、 some()这几个方法都属于迭代方法每个方法都接收两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象——影响this 的值。传入这些方法中的函数会接收三个参数:数组项的值、该项在数组中的位置和数组对象本身!

另外还有 ECMAScript 2015(ES6)规范的一些方法,会在学习之后添加上!

时间: 2024-10-22 01:26:05

JavaScript中 Object和Array对象的相关文章

在JavaScript中生成自定义的对象

使用对象便于组织信息.下面我们介绍如何在JavaScript中生成自定义的对象. ---------------------- JavaScript 对象 在前面几章中我们学到JavaScript中有些内置的对象,比如String, Date, Array等等.除此之外,你还可以定义自己的对象. 对象是一种特殊的数据,含有属性和函数. 下面让我们用一个例子来说明:比如一个人是一个对象.属性是与对象有联系的值,比如人的属性包括姓名,身高,体重,年龄,肤色,眼睛的颜色等等.所有人都有这些属性,但是每

JavaScript中Object.prototype.toString方法的原理

在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. ? 1 2 var arr = []; console.log(Object.prototype.toString.call(arr)) //"[object Array]" 本文要讲的就是,toString方法是如何做到这一点的,原理是什么. ECMAScript 3 在ES3中,Object.prototype.toString方法的规范如下:

JavaScript中object和Object有什么区别

JavaScript中object和Object有什么区别,为什么用typeof检测对象,返回object,而用instanceof 必须要接Object呢 -------------------------------------------------------------------- 这个问题和我之前遇到的问题非常相似,我认为这里有两个问题需要解决,一个是运算符new的作用机制,一个是function关键字和Funtion内置对象之间的区别.看了一些前辈的博客和标准,这里帮提问者总结一

JavaScript中的防篡改对象

由于JavaScript共享的特性,任何对象都可以被放在同一环境下运行的代码修改. 例如: var person = {name:"caibin'} person.age = 21; 即使第一行定义了完整的person对象,那么第二行代码仍然可以对其添加属性,删除属性等. 我们有三个方法可以防止你做出这些行为. 一.不可扩展对象: 先来看person本身的扩展性: Object.isExtensible(person); // true 接下来执行: Object.preventExtensio

javascript中遇到的字符串对象处理

在javascript中对参数处理: 1 <script> 2 function getParam() 3 { 4 urlInfo=window.location.href; //获取当前页面的url 5 intLen=urlInfo.length; //获取url的长度 6 offset=urlInfo.indexOf("?"); //设置参数字符串开始的位置 7 strKeyValue=urlinfo.substr(offset,len); //取出参数字符串 这里会获

Javascript中使用WScript.Shell对象执行.bat文件和cmd命令

Javascript中使用WScript.Shell对象执行.bat文件和cmd命令 http://www.cnblogs.com/ZHF/p/3328439.html WScript.Shell(Windows Script Host Runtime Library)是一个对象,对应的文件是C:/WINDOWS/system32/wshom.ocx,Wscript.shell是服务器系统会用到的一种组件.shell 就是“壳”的意思,这个对象可以执行操作系统外壳常用的操作,比如运行程序.读写注

JavaScript中Object对象

Object对象是提供所有JavaScript对象通用的功能.使用方法: obj = new Object([value]) 其中obj是必选项.要赋值为 Object 对象的变量名.www.82676666.com value是可选项.任意一种 JScript 基本数据类型.(Number.Boolean.或 String.)如果 value 为一个对象,返回不作改动的该对象.如果 value 为 null.undefined,或者没有给出,则产生没有内容的对象. Object 对象被包含在所

javascript中的内置对象总结

内置对象 标准内置对象 Object Object.create Object.prototype.toString Object.prototype.hasOwnProperty Boolean String String.prototype.indexOf String.prototype.replace String.prototype.split Number Number.prototype.toFixed Array Array.prototype.splice Array.prot

JavaScript中的类数组对象

在javascript中,对象与数组都是这门语言的原生规范中的基本数据类型,处于并列的位置. 一般来说,如果我们有一个对象obj和一个数组a: obj["attr1"];    //取obj对象的attr1属性 a[1];   //取数组a中的第二个元素 但是,有些时候,也会将一个对象“伪装”成一个数组来用,我们把这种对象称为“类数组对象”,再此我们可以給它下一个定义,请看如下的代码: var a= {}; var i = 0; for(i=0; i<10 ; i++){ a[i