JavaScript —— 数组(Array) 对象

创建一个数组

  1. 常规方式:
	var myCars = new Array()
    myCars[0] = 'Saab'
    myCars[1] = 'Volvo'
    console.log(myCars[1]) // Volvo
  1. 简洁方式:
	var myCars = new Array('Saab','Volvo','BMW')
    console.log(myCars[1]) // Volvo
  1. 字面表达式:
	var myCars = ['Saab','Volvo','BMW']
    console.log(myCars[1]) // Volvo

数组属性

  1. constructor:返回创建数组对象的原型函数。
	var myCars = ['Saab','Volvo','BMW']
    console.log(myCars.constructor) // ƒ Array() { [native code] }
  1. 数组的 constructor 属性返回 function Array() { [native code] }
  2. 数字 constructor 属性返回 function Number() { [native code] }
  3. 字符串 constructor 属性返回 function String() { [native code] }
  1. length:返回数组的数目。
	var myCars = ['Saab','Volvo','BMW']
    console.log(myCars.length) // 3
  1. prototype:允许向数组对象添加属性或方法。
	Array.prototype.myUcase = function() {
    
    
        for(i = 0; i < this.length; i++){
    
    
            this[i] = this[i].toUpperCase()
        }
    }

    var fruits = ["Banana", "Orange", "Apple", "Mango"];
    console.log(fruits) //['Banana', 'Orange', 'Apple', 'Mango']
    fruits.myUcase()
    console.log(fruits) //['BANANA', 'ORANGE', 'APPLE', 'MANGO']

数组对象方法

  1. concat():连接两个或多个数组。不会改变现有的数组,仅仅返回被连接数组的一个副本。
	let mike = ['mike','12']
    let john = ['john','20']
    let hob = ['hob','16']
    let total = mike.concat(john, hob)
    console.log(total) //['mike', '12', 'john', '20', 'hob', '16']
  1. join():把数组中的所有元素转换一个字符串。元素是通过指定的分隔符进行分隔的。
	let classic = ['唐三藏','孙悟空','猪八戒','沙和尚']
    let energy = classic.join(' & ')
    console.log(energy) // 唐三藏 & 孙悟空 & 猪八戒 & 沙和尚
  1. shift():删除数组的第一个元素并返回删除的元素。该方法改变数组的长度。
	let classic = ['唐三藏','孙悟空','猪八戒','沙和尚']
    let remove = classic.shift()
    console.log(remove) // 唐三藏
  1. pop():删除数组的最后一个元素并返回删除的元素。该方法改变数组的长度。
	let classic = ['唐三藏','孙悟空','猪八戒','沙和尚']
    let remove = classic.pop()
    console.log(remove) // 沙和尚
  1. unshift():向数组的开头添加一个或多个元素,并返回新的长度。该方法改变数组的长度。
	let classic = ['唐三藏','孙悟空','猪八戒','沙和尚']
    let preAdd = classic.unshift('白龙马','金箍棒')
    console.log(preAdd) //6
    console.log(classic) //['白龙马', '金箍棒', '唐三藏', '孙悟空', '猪八戒', '沙和尚']
  1. push():向数组的末尾添加一个或多个元素,并返回新的长度。该方法改变数组的长度。
	let classic = ['唐三藏','孙悟空','猪八戒','沙和尚']
    let add = classic.push('白龙马')
    console.log(add) //5
    console.log(classic) //['唐三藏', '孙悟空', '猪八戒', '沙和尚', '白龙马']
  1. splice():添加或删除数组中的元素。返回被添加或删除元素的数组。该方法会改变原始数组。

语法:array.splice(index,howmany,item1,.....,itemX)

  1. index:必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素的下标,必须是数字。
  2. howmany:可选。规定应该删除多少元素。必须是数字,但可以是 “0”。
    如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
  3. item1, …, itemX:可选。要添加到数组的新元素

数组中添加新元素:

	let classic = ['唐三藏','孙悟空','猪八戒','沙和尚']
    let add = classic.splice(2,0,'白龙马')
    console.log(classic) // ['唐三藏', '孙悟空', '白龙马', '猪八戒', '沙和尚']

移出数组的第三个元素,并在数组第三个位置添加新元素:

    let classic = ['唐三藏','孙悟空','猪八戒','沙和尚']
    let change = classic.splice(2,1,'白龙马')
    console.log(classic) // ['唐三藏', '孙悟空', '白龙马', '沙和尚']

从第三个位置开始删除数组后的两个元素:

	let classic = ['唐三藏','孙悟空','猪八戒','沙和尚']
    let remove = classic.splice(2,2)
    console.log(classic) //['唐三藏', '孙悟空']
  1. slice():从已有的数组中返回选定的元素。以新的字符串返回被提取的部分。该方法不改变原始数组。

在数组中读取元素:

	let classic = ['唐三藏','孙悟空','猪八戒','沙和尚']
    let newClassic = classic.slice(1,3)
    console.log(newClassic) //['孙悟空', '猪八戒']

使用负值从数组中读取元素:

	let classic = ['唐三藏','孙悟空','猪八戒','沙和尚']
    let newClassic = classic.slice(-3,-1)
    // let newClassic = classic.slice(-3) //['孙悟空', '猪八戒', '沙和尚']
    console.log(newClassic) //['孙悟空', '猪八戒']

slice(-3,-1): 截取倒数第三个(包含)到倒数第一个(不包含)的两个元素。
slice(-3): 截取最后三个元素。

截取字符串:

	let str = 'www.baidu.com!'
    console.log(str.slice(4)) //baidu.com!
    console.log(str.slice(4,9)) //baidu

slice(4): 从第 5 个字符开始截取到末尾。
slice(4,10): 从第5 个字符开始截取到第 9 个字符。

  1. reverse():颠倒数组中元素的顺序。 返回颠倒顺序后的数组。
	let classic = ['唐三藏','孙悟空','猪八戒','沙和尚']
    let reverse = classic.reverse()
    console.log(reverse) //['沙和尚', '猪八戒', '孙悟空', '唐三藏']
  1. toString():转换数组为字符串。并返回用逗号隔开的结果。
	let classic = ['唐三藏','孙悟空','猪八戒','沙和尚']
    let str = classic.toString()
    console.log(str) //唐三藏,孙悟空,猪八戒,沙和尚
  1. sort():对数组的元素进行排序。排序顺序可以是字母或数字,并按升序或降序。默认排序顺序为按字母升序。该方法会改变原始数组。

数组排序(字母和升序):

	let fruits = ["Banana", "Orange", "Apple", "Mango"]
    console.log(fruits.sort()) //['Apple', 'Banana', 'Mango', 'Orange']

数字排序(字母和降序):

    let fruits = ["Banana", "Orange", "Apple", "Mango"]
    fruits.sort()
    console.log(fruits.reverse()) //['Orange', 'Mango', 'Banana', 'Apple']

数字排序(数字和升序):

	let points = [40,20,1,5,10,6]
    console.log(points.sort(function(a,b){
    
    return a-b})) //[1, 5, 6, 10, 20, 40]

数字降序(数字和降序):

	let points = [40,20,1,5,10,6]
    console.log(points.sort(function(a,b){
    
    return b-a})) //[40, 20, 10, 6, 5, 1]
  1. filter():该方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。该方法不会改变原始数组。
	let ages = [20, 15, 35, 12]
        
    function checkAdult(age){
    
    
        return age >= 18
    }

    let pass = ages.filter(checkAdult)
    console.log(pass) //[20, 35]
  1. map():该方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。map()方法按照原始数组元素顺序依次处理元素。该方法不会改变原始数组。

返回一个数组,数组中元素为原始数组的平方根:

	let numbers = [4, 9, 16, 25]

    function Fn(){
    
    
        return numbers.map(Math.sqrt)
    }

    console.log(Fn()) // [2, 3, 4, 5]
  1. forEach():用于调用数组的每个元素,并将元素传递给回调函数。 forEach() 对于空数组是不会执行回调函数的。

列出数组的每个元素:

	let numbers = [4, 9, 16, 25]

    function Fn(item, index){
    
    
        let result = 'index[' + index + ']:' + item
        console.log(result)
    }

    numbers.forEach(Fn)
    
	/* 输出:
	index[0]: 4
	index[1]: 9
	index[2]: 16
	index[3]: 25 
	*/

使用 return 语句 实现 continue 效果:

	let arr = [1,2,3,4,5]
    arr.forEach(function (item){
    
    
        if(item === 3){
    
    
            return
        }
        console.log(item) // 1 2 4 5
    })

使用 return 语句 实现 break 效果:

	let arr = [1,2,3,4,5]
       
    arr.every(function (item){
    
    
        console.log(item) // 1 2 3
        return item !==3
    })
  1. keys():用于从数组创建一个包含数组键的可迭代对象。如果对象是数组返回 true,否则返回 false。
	let fruits = ["Banana", "Orange", "Apple"];
    let result = fruits.keys()

    console.log(result.next().value) // 0
    console.log(result.next().value) // 1
    console.log(result.next().value) // 2
    console.log(result.next().value) // undefined

不积跬步无以至千里 不积小流无以成江海

猜你喜欢

转载自blog.csdn.net/qq_45902692/article/details/123485842