建立数组数组
var fruits = ['Apple', 'Banana']; console.log(fruits.length);
经过索引访问数组元素函数
var first = fruits[0]; // Apple
遍历数组post
for(var i = fruits.length-1;i >=0 ; i--){ console.log(fruits[i]); } for(var i = 0;i < fruits.length; i++){ console.log(fruits[i]); } fruits.forEach(function (item, index, array) { console.log(item, index); });
添加元素到数组的末尾测试
var newLength = fruits.push('Orange'); // ["Apple", "Banana", "Orange"]
删除数组末尾的元素ui
var last = fruits.pop(); // remove Orange (from the end) // ["Apple", "Banana"];
删除数组最前面(头部)的元素this
var first = fruits.shift(); // remove Apple from the front // ["Banana"];
添加元素到数组的头部prototype
var newLength = fruits.unshift('Strawberry') // add to the front // ["Strawberry", "Banana"];
找出某个元素在数组中的索引code
indexOf 该方法用来检索某项数组出现的位置,出现屡次的话只记录第一次出现的位置对象
var index = fruits.indexOf('Banana'); // 1
经过索引删除某个元素排序
var removedItem = fruits.splice(pos, 1); // this is how to remove an item // ["Strawberry", "Mango"]
从一个索引位置删除多个元素
会改变原数组
var vegetables = ['Cabbage', 'Turnip', 'Radish', 'Carrot']; var pos = 1, n = 2; var removedItems = vegetables.splice(pos, n); console.log(vegetables); // ["Cabbage", "Carrot"] console.log(removedItems); // ["Turnip", "Radish"]
复制一个数组
从某个已有的数组返回选定的元素。可理解为数组截取,可接受两个参数,只填一个参数表示从该位置起截取至最后,填两个参数表示要截取的头和尾的位置
var shallowCopy = fruits.slice();
console.log(fruits['2'] == fruits['02']); // true fruits[5] = 'mango'; console.log(Object.keys(fruits)); // ['0', '1', '2', '5'] console.log(fruits.length); // 6
JavaScript 解释器经过调用 toString 隐式转换成字符串
Array.length 属性会根据数组的内置方法调整改变
数组方法
Array.from() 从类数组对象或者可迭代对象中建立一个新的数组实例。
Array.isArray() 用来判断某个变量是不是一个数组对象。
Array.of() 根据一组参数来建立新的数组实例,支持任意的参数数量和类型。
实例方法
全部数组实例都会从 Array.prototype 继承属性和方法。修改 Array 的原型会影响到全部的数组实例。
concat()
链接两个或更多的数组,并返回结果
var arr = [ 1, 2, 3 ]; var arr2= arr.concat("4", "5", "6"); //["1", "2", "3", "4", "5", "6"];
join()
把数组的全部元素放入一个字符串并经过指定的分隔符进行分隔
arr.join("+"); //"1+2+3";
reverse()
反转数组中元素的顺序。
arr.reverse(); console.log(arr); // [3, 2, 1];
sort()
数组排序 按照字符串的方式来排序。
toString()
把数组转换为字符串,并返回结果
filter()
建立一个新的数组,新数组中的元素是经过检查指定数组中符合条件的全部元素。
//过滤掉等于 2 的数组元素: function isBigEnough(element, index, array) { return (element == 2); } arr.filter(isBigEnough) //2
map()
返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值
//数组元素平方: function two(x) { return x*x; } console.log(arr.map(two))
some()
用于检测数组中的元素是否知足指定条件,若是有一个元素知足条件,则表达式返回true, 剩余的元素不会再执行检测,若是没有知足条件的元素,则返回false。
function whoBig(element, index, array) { return (element >= 100); } arr.some(whoBig) //false
every()
用于检测数组全部元素是否都符合指定条件,若是数组中检测到有一个元素不知足,则整个表达式返回false,且剩余的元素不会再进行检测。
function whoBig(element, index, array) { return (element >= 4); } arr.every(whoBig) //false
find()
返回传入一个测试条件,符合条件的数组第一个元素,当数组中的元素在测试条件时返回true时, find() 返回符合条件的元素,以后的值不会再调用执行函数。若是没有符合条件的元素返回 undefined
const pets = [ { type: 'Dog', name: 'Max'}, { type: 'Cat', name: 'Karl'}, { type: 'Dog', name: 'Tommy'}, ]; var pet = pets.find(pet => pet.type ==='Dog' && pet.name === 'Tommy'); console.log(pet); // { type: 'Dog', name: 'Tommy' }
reduce()
接收一个函数做为累加器,数组中的每一个值(从左到右)开始缩减,最终计算为一个值
var arr = [1,2,3]; var sum = arr.reduce(function(prev, cur, index, arr) { console.log(prev, cur, index); return prev + cur; }) console.log(arr, sum);
数组去重
function unique(arr) { var result = []; for (var i = arr.length - 1; i >= 0; i--) { if(result.indexOf(arr[i])==-1){ result.push(arr[i]); } } return result; } var arr = [1,2,3,4,5,2,2,2,'test','king','test']; console.log(unique(arr)); function unique1(arr){ var obj = {},result = []; for (var i = arr.length - 1; i >= 0; i--) { if(!obj[arr[i]]){ obj[arr[i]] = true; result.push(arr[i]); } } return result; } console.log(unique1(arr)); function unique2(arr){ arr.sort(); var result =[]; for (var i = arr.length - 1; i >= 0; i--) { if(arr[i]!=result[result.length-1]){ result.push(arr[i]); } } return result; } console.log(unique2(arr)); function unique3(a) { return Array.from(new Set(a)); }
感谢