JavaScript面向对象编程——Array范例

概述

一维数组

数组是一个有序的数据鸠合,能够经由过程数组称号和索引举行接见。JavaScript中并没有明白的数组数据范例。

二维数组

数组是能够嵌套的,这就意味着一个数组能够作为一个袁旭被包括在另一个数组内里。应用JavaScript这个特性,建立二维数组,即数组的数组。

数组的罕见要领

检测数组

怎样肯定当前是一个数组,JavaScrpt供应了几种体式格局;
1.typeof没法检测数组对象:typeof[]返回object
2.instanceof:[]instanceof Array返回true/false
3.Object.prototype.toString.call([]):返回[objcet Array]
4.Array.prototype.isPrototypeOf([]):返回true/false
5.ES5中新要领:Array.isArray([]):返回true/false

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

console.log(arr instanceof Array);// true
/*
    Object.prototype.toString.call()要领
    * 作用 - 用于推断当前对象的(数据)范例
    * 效果 - [object Array]
    * 特性 - 能够正确推断出当前变量的范例
 */
console.log(Object.prototype.toString.call(arr));

console.log(typeof null);// object
// console.log(null instanceof Null);// 报错
console.log(null instanceof Object);// false
console.log(Object.prototype.toString.call(null));
// Object.prototype.isPrototypeOf()要领 - 推断指定范例是不是涌现在当前对象的原型链中
console.log(Array.prototype.isPrototypeOf(arr));// true

console.log(Array.isArray(arr));// true

转换要领

JavaScript中供应了两种要领;
1.toString():把数组转换为字符串,而且返回效果。
2.valueOf():返回数组对象的原始值。

var arr = [1,2,3,4,5];
/*
    应用toString()要领将数组转换为字符串
    * 效果 - 多个数组元素被逗号举行分开构成的字符串
 */
console.log(arr.toString());// 1,2,3,4,5

console.log(arr.valueOf());// [ 1, 2, 3, 4, 5 ]

var obj = {
    name : '张无忌'
}
console.log(obj.valueOf());// true

排序要领

JavaScript供应了两种要领,用于数组的排序。
1.reverse():反转数组的元素递次。
2.sort():对数组的元素举行排序。
要注重reverse()和sort()要领的返回值是经由排序以后的数组。

var arr = [3,1,2,3,4,5,10];

// console.log(arr.reverse());// [ 5, 4, 3, 2, 1 ]
/*
    Array.sort()要领
    * 作用 - 对数组中的元素举行排序
    * 注重
      * 并非从小抵达的排序
      * 影响原有数组元素的递次
 */
// var result = arr.sort();
// console.log(result);
// console.log(arr);

var result = arr.sort(function(a,b){
    /*if (a < b) {
        return 1;
    }*/
    if (a > b) {
        return 1;
    }
})
console.log(arr);
console.log(result);

衔接要领

衔接要领平常用于多个数组之间的衔接操纵,在JavaScript中供应了:
concat()要领,衔接两个或更多的数组,并返回效果。

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

console.log(arr.concat(6));
console.log(arr.concat([7,8,9]));

操纵要领

操纵要领就是用于数组的删除、插进去和替代。在JavaScript中供应了两种要领。
1.slice():拔取数组的一部分,并返回一个新数组。
2.splice():从数组中你谁人增加或删除元素。

var arr = [1,2,3,4,5];
/*
    splice(start, deleteCount)要领
    * 作用 - 用于删除当前数组中指定位置指定个数的元素
    * 参数
      * start - 示意删除的最先位置
      * deleteCount - 示意删除的个数
    * 返回值 - 将删除的元素构成的新数组举行返回
 */
// var result = arr.splice(0, 5);
// console.log(result);
// console.log(arr);

/*
    splice(start, deleteCount, item1, item2, ...)要领
    * 作用 - 向指定数组的指定位置增加元素
    * 参数
      * start - 示意删除的最先位置
      * deleteCount - 示意删除的个数
      * item1, item2, ... - 示意向数组增加的元素
    * 返回值 - 将删除的元素构成的新数组举行返回
 */
// var result = arr.splice(0, 0, 6,7,8);
// console.log(result);
// console.log(arr);

// var result = arr.splice(0, 3, 6,7,8);
// console.log(result);
// console.log(arr);

/*
    slice()要领
    * 作用 - 截取指定数组中的元素
    * 参数
      * begin - 示意最先截取的位置(从 0 最先)
      * end - 示意完毕截取的位置(截取末了一个位置的下一个位置)
    * 返回值 - 返回截取的元素构成的新数组
 */
var result = arr.slice(2,3);
console.log(result);

位置要领

位置要领用于猎取数组中指定元素的索引值,在JavaScript中供应了两种要领。
1.indexOf()搜刮数组中的元素,并返回他地点的位置。
2.lastlndexOf()返回一个指定的字符串值末了涌现的位置,在一个字符串中的指定位置从后向前搜刮。

var arr = ['张无忌','周芷若','张无忌','赵敏','小昭'];
/*
    indexOf()和lastIndexOf()要领
    * 用于检索数组中是不是包括指定元素内容 -> 返回元素地点的位置
      * indexOf() - 从左至右的递次举行检索
      * lastIndexOf() - 从右至左的递次举行检索
    * 返回第一个婚配元素的位置信息
    * 假如检索的元素并不在指定的数组中时 -> 效果为 -1
 */
console.log(arr.indexOf('张无忌'));// 0
console.log(arr.lastIndexOf('张无忌'));// 2
console.log(arr.indexOf('灭绝师太'));//

迭代与合并要领

迭代要领

JavaScript供应了如下要领,用于数组的迭代遍历:
1.every():推断数组中每一个元素是不是都满足fun函数定义的前提。只需满足才返回true,不然返回false。
2.filter():特地用于筛选出数组中相符fun函数推断前提的元素构成的心数组。
3.forEach():特地用于对原数组中每一个元素实行雷同的fun函数对象划定的操纵。
4.map():特地用于基于袁术组建立新数组对象。
5.some():推断数组中是不是包括满足fun暧昧是定义的前提的元素,只需包括就返回true,不然返回false。

var arr = ['张无忌','周芷若','赵敏','小昭'];
/*
    Array.prototype.forEach()要领
    * 作用 - 用于遍历指定数组
    * 参数
      * callback - 示意回调函数
        * currentValue - 示意遍历数组获得每一个元素
        * index - 示意遍历数组获得每一个元素对应的索引值
        * array - 示意遍历的数组
    *
 */
arr.forEach(function(currentValue, index, array){
    console.log(array);
});

/* 为Array范例新增forEach()要领
Object.defineProperty(Array.prototype, 'forEach', {
    value : function(callback){
        // 假定获得当前的数组
        for (var i=0; i<arr.length; i++) {
            callback(i, arr[i], arr);
        }
    }
});
*/

合并要领

合并要领用于数组的迭代合并,JavaScript中供应了两种体式格局
1.reduce()将数组从左向右迭代。
2.reduceRight()将数组从右向左迭代.

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

arr.reduce(function(accumulator, currentValue, currentIndex, array){
    console.log(accumulator)
    return accumulator + currentValue;
});
    原文作者:武文佳
    原文地址: https://segmentfault.com/a/1190000016082262
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞