js对象数组Array详解(参照MDN官⽹:https:
⼀:数组的创建⽅式:
  1、采⽤直接量创建
  var arr = [];//创建⼀个空数组
  var arr2 = [1,2,3];//创建⼀个有三个元素的数组
  2、采⽤构造函数创建
  a、var arr1 = new Array();//创建空数组
  b、var arr2 = new Array(10);//创建⼀个长度为10的数组
  c、var arr3 =  new Array(5,4,3,2,1);//创建数组并初始化
⼆:数组的⽅法
  据最新的chrome浏览器提供的⽅法可以在控制台看到:
接下来就⼀⼀讲解:
  1.at()⽅法:
    concat() ⽅法⽤于连接两个或多个数组。该⽅法不会改变现有的数组,⽽仅仅会返回被连接数组的⼀个副本。
    var m = [1,2,3,4,5];
    document.write(
);//1,2,3,4,5,6,8
    var n=[4,5,6];
    console.at(n))//1,2,3,4,5,4,5,6;
  .constructor:当前数组通过__proto__指向Array这个构造函数的prototype,这个构造函数就是他⾃⼰Array,数组的所有⽅法都是通过继承数组Array原型得到的
  2.ies()⽅法:
      var ary=[1,2,3,4,5,6];
      var ies();
      console.log(ary);
    console.log(ary2);//Array Iterator返回⼀个数组迭代器,这个迭代器的原型上有next⽅法
    console.());//Object {value: Array[2], done: false}  value:Array[2] ----[0:0,1:1];
    console.());//Object {value: Array[2], done: false}  value:Array[2] ----[0:1,1:2];
    //可以看出每次执⾏这个next().都会返回⼀个该数组的索引和值组成的新的数组,被包在⼀个对象的value属性⾥    //所以可以通过().value获取当前的值和索引
3.
Array.prototype.
every()⽅法:
    every() ⽅法⽤于检测数组所有元素是否都符合指定条件(通过函数提供)。
    every() ⽅法使⽤指定函数检测数组中的所有元素:如果数组中检测到有⼀个元素不满⾜,则整个表达式返回false ,且剩余的元素不会再进⾏检测。如果所有元素都满⾜条件,则返回 true。
    注意: every() 不会对空数组进⾏检测。
    注意: every() 不会改变原始数组。
    array.every(function(Value,index,arr), obj)
  该函数接受五个参数第⼀个function,返回boolea值,就是通过every⽅法⾥⾯函数进⾏去判断,所以function是必须的,
   第⼆个参数就是Value,当前数组循环⽐较的每⼀项值,第三个index就是该值对应的索引,第四个arr就是当前元素所在的数组,第五个参数就是可以改变function关键字的,如果不传默认的this就是window,如果传⼊值,那this就是你传⼊的值,⽤作 "this" 的值。
   除了函数和当前值value,其他的参数都是可选 
    以下事例传⼊了所有参数,返回是值是要求element>3的,所以当第⼀个值的时候1就不满⾜条件,直接返回了false
    var ary=[1,2,3,4,5,6];
    ary.every(function(element,index,array){
      console.log(element);//1
    console.log(index);//0
    console.log(array);//[1,2,3,4,5,6]
    console.log(this);//[1,2,3,4,5,6]
    return  element>3;
    },ary);
     以下事例传⼊了不传this对应的参数,返回是值是要求element<3的,所以当这个值是3的时候就不满⾜条件,才返回了false
    var ary=[1,2,3,4,5,6];
    ary.every(function(element,index,array){
      console.log(element);//1,2,3
    console.log(index);//0,1,2
    console.log(array);//[1,2,3,4,5,6]
    console.log(this);//window
    return  element<3;
    });
    console.log( ary.every(function(element,index,array){
    console.log(element);
    console.log(index);
    console.log(array);
    console.log(this);
    return  element<3;
}    ));//false
4.
Array.prototype.
.fill()⽅法:
此⽅法就是给数组填充值
fill(value,start,end)
有三个参数,value:就是需要填充的值,start需要填充起始位置,默认从0开始,负数就是倒数位置开始,end就是结束为
⽌,默认就是数组的length,后两个参数可选
[1, 2, 3].fill(4); // [4, 4, 4]
[1, 2, 3].fill(4, 1); // [1, 4, 4]
[1, 2, 3].fill(4, 1, 2); // [1, 4, 3]
[1, 2, 3].fill(4, 1, 1); // [1, 2, 3]
[1, 2, 3].fill(4, -3, -2); // [4, 2, 3]
[1, 2, 3].fill(4, NaN, NaN); // [1, 2, 3]
5.Array.prototype.filter()⽅法:
返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。
ary.filter(function(Value, index,arr),this)
该⽅法有执⾏函数function,内部参数有数组的每项值,以及对应的索引,和该数组,后两个可选,this这个参数就是执⾏function的时候,内部的this指向;
注意: filter() 不会对空数组进⾏检测, filter() 不会改变原始数组。
//过滤掉⼤于 10 的数组元素:
function isBig(element, index, array) {
return (element >= 10);
}
var filary = [12, 5, 8, 13, 40].filter(isBig);
console.log(filary);// 12, 13, 40
//数组的每⼀项执⾏这个⽅法,把⽐较完后的值放到⼀个新数组,执⾏完之后,把这个数组在返回出来赋值给这个filary变
量接受;
6.Array.prototype.find()⽅法:
出数组中满⾜条件的第⼀个值,如果存在就返回,如果不存在就返回undefined.
arr.find(callback(element,index,array));
callback:需要⽐较处理的函数,element,数组当前传进的每⼀项值,array当前数组;
filter过滤对象数组
function isBigEnough(element) { return element >= 15; } [12, 5, 8, 130, 44].find(isBigEnough); // 130 返回满⾜条件的第⼀个值
function isBigEnough(element) { return element >= 150;//这个值改为150,数组中的每⼀项都不满⾜条件 } [12, 5, 8, 130, 44].find(isBigEnough); //都不满⾜条件,返也可以对数组中的对象进⾏find⽅法
ar inventory = [
{name: 'apples', quantity: 2}, {name: 'bananas', quantity: 0}, {name: 'cherries', quantity: 5} ]; function findCherries(fruit) { return fruit.name === 'cherries'
在数组中可以⼀个期望值:
function isPrime(element, index, array) { var start = 2; while (start <= Math.sqrt(element)) { if (element % start++ < 1) { return false; } } return element > 1;
7.Array.prototype.findIndex()⽅法:
和上⾯的find⽅法对应,上⾯函数返回第⼀个满⾜条件的值,这个函数是返回满⾜条件的值在数组中的索引,如果不存在
就返回-1;
function isBigEnough(element) { return element >= 15; } [12, 5, 8, 130, 44].find(isBigEnough); // 3 返回满⾜条件的第⼀个值的索引值
function isBigEnough(element) { return element >= 150;//这个值改为150,数组中的每⼀项都不满⾜条件 } [12, 5, 8, 130, 44].find(isBigEnough); //都不满⾜条件,返8.Array.prototype.forEach()⽅法:
该⽅法对数组中的每⼀项对提供的函数执⾏⼀次。
arr.forEach(function callback(currentValue, index, array) {
//your iterator
}[, thisArg]);
callback:需要执⾏的函数,element,数组当前传进的每⼀项值,array当前数组;
注意:该函数没有返回值,返回值都是undefined。
var a = ['a', 'b', 'c']; a.forEach(function(element) { console.log(element); }); // a // b // c
每⼀项都执⾏⼀次function,⼀次输出每⼀项。
function logArrayElements(element, index, array) { console.log('a[' + index + '] = ' + element); } // Notice that index 2 is skipped since there is no item at // that pos  9.Array.prototype.includes()的⽅法:
  该⽅法⽤来判断数组中是否包含某⼀个值,如果包含返回true,如果不包含,返回false;
  arr.includes(searchElement)
  arr.includes(searchElement, fromIndex)
  该⽅法有两个参数,第⼀个就是需要查的值,第⼆个就是从数组那个索引开始查
  var a = [1, 2, 3]; a.includes(2); // true    a.includes(4); // false
  举例:[1, 2, 3].includes(2); // true
  [1, 2, 3].includes(4); // false
  [1, 2, 3].includes(3, 3); // false
  [1, 2, 3].includes(3, -1); // true
  [1, 2, NaN].includes(NaN); // true
10.Array.prototype.indexOf()⽅法:
  参数和includes类似
 arr.indexOf(searchElement)
 arr.indexOf(searchElement, fromIndex);
第⼀个参数,就是需要查询的值,第⼆个参数就是从数组那个位置开始查, 
该⽅法就是判断数组中是否有该值,如果存在,就将该值在数组中的索引值返回,如果不存在就返回-1.
举例:
var array = [2, 9, 9]; array.indexOf(2); // 0
  array.indexOf(7); // -1
  array.indexOf(9, 2); // 2
  array.indexOf(2, -1); // -1
  array.indexOf(2, -3); // 0
11.Array.prototype.join()⽅法:
将数组按照指定的分隔符,分隔为字符串。默认不传就是按照逗号分隔。
参数:可以不传,那么就是按照逗号分隔。可以穿指定的分隔符号:
var a = ['Wind', 'Rain', 'Fire']; a.join(); // 'Wind,Rain,Fire' a.join('-'); // 'Wind-Rain-Fire'
a.join(' + '); // 'Wind + Rain + Fire'
a.join(''); // 'WindRainFire';
12.Array.prototype.keys()⽅法:
该⽅法不需要参数。
该⽅法返回的是⼀个新的数组,数组⾥每⼀项都是含有每项索引值的对象。
例如:
var arr = ['a', 'b', 'c']; var iterator = arr.keys(); console.()); // { value: 0, done: false } console.()); // { value: 1, done: false } console 13.Array.prototype.lastIndexOf()⽅法:
该⽅法与indexof类似,查元素是从数组的最后⼀项往第⼀项,⽽indexOf是从数组的第⼀项开始。如果存在该值,就返回当前值的索引值,如果不存在,就返回也是有两个参数:
arr.indexOf(searchElement)
arr.indexOf(searchElement, fromIndex);
第⼀个参数,就是需要查询的值,第⼆个参数就是从数组那个位置开始查, 
var numbers = [2, 5, 9, 2]; numbers.lastIndexOf(2); // 3 numbers.lastIndexOf(7); // -1;
14.Array.prototype.map()⽅法:
该⽅法将会将数组的每⼀项按照function执⾏,将执⾏结果放到⼀个新数组,然后将这个数组返回到外部。
var new_array = arr.map(callback[, thisArg]);
callback:需要执⾏的函数,thisArg:element,数组当前传进的每⼀项值,index:每⼀项的索引,array当前数组;
var numbers = [1, 4, 9]; var roots = numbers.map(Math.sqrt); // roots is now [1, 2, 3] // numbers is still [1, 4, 9]
var kvArray = [{key: 1, value: 10}, {key: 2, value: 20}, {key: 3, value: 30}]; var reformattedArray = kvArray.map(function(obj) { var rObj = {}; rObj[obj.key] = obj
var numbers = [1, 4, 9]; var doubles = numbers.map(function(num) { return num * 2; }); // doubles is now [2, 8, 18] // numbers is still [1, 4, 9]
var elems = document.querySelectorAll('select option:checked'); var values = Array.prototype.map.call(elems, function(obj) { return obj.value; });

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。