Javascript Array对象方法

188 阅读6分钟
  • concat()方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。

语法:array1.concat(array2,array3,...,arrayX)

例如:

var hege = ["Cecilie", "Lone"]; 

var stale = ["Emil", "Tobias", "Linus"]; 

var kai = ["Robin"]; 

var children = hege.concat(stale,kai);

console.log(children); // Cecilie,Lone,Emil,Tobias,Linus,Robin

  • every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。

every() 方法使用指定函数检测数组中的所有元素:

  1. 如果数组中检测到有一个元素不满足,则整个表达式返回false,且剩余的元素不会再进行检测。
  2. 如果所有元素都满足条件,则返回 true。

注意: every() 不会对空数组进行检测。

注意: every() 不会改变原始数组。

语法:array.every(function(currentValue,index,arr), thisValue)

function(currentValue, index,arr) :必须。函数,数组中的每个元素都会执行这个函数

例如:

<p>最小年龄: <input type="number" id="ageToCheck" value="18"></p>

<button onclick="myFunction()">点我</button>

<p>是否所有年龄都符号条件? <span id="demo"></span></p>

<script>

var ages = [32, 33, 12, 40];

function checkAdult(age) { 

 return age >= document.getElementById("ageToCheck").value;}

function myFunction() { 

 document.getElementById("demo").innerHTML = ages.every(checkAdult);

}

</script>

  • fill() 方法用于将一个固定值替换数组的元素。

语法:array.fill(value, start, end)

value:必需。填充的值。
start:可选。开始填充位置。
end可选。停止填充位置 (默认为array.length)

例如:

var fruits = ["Banana", "Orange", "Apple", "Mango"]; 

fruits.fill("Runoob", 2, 4);

console.log(fruits); // ["Banana", "Orange", "Runoob", "Runoob"]

  • filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

注意: filter() 不会对空数组进行检测。

注意: filter() 不会改变原始数组。

语法:array.filter(function(currentValue,index,arr), thisValue)

function(currentValue, index,arr):必须。函数,数组中的每个元素都会执行这个函数
currentValue:必需。当前元素
index:可选。当前元素的索引值。
arr:可选。当前元素所属的数组对象。

例如:

var ages = [32, 33, 16, 40];

function checkAdult(age) {     

 return age >= 18;

}

function myFunction() { 

 document.getElementById("demo").innerHTML = ages.filter(checkAdult);

}

结果为:32,33,40

  • forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。

注意: forEach() 对于空数组是不会执行回调函数的。

语法:array.forEach(function(currentValue, index, arr), thisValue)

function(currentValue, index,arr):必须。函数,数组中的每个元素都会执行这个函数
currentValue:必需。当前元素
index:可选。当前元素的索引值。
arr:可选。当前元素所属的数组对象。

例如:

var numbers = [4, 9, 16, 25];

var sum = 0;

numbers.forEach(myFunction);

function myFunction(item, index) { 

  sum += item;

}

console.log(sum); // 54

  • join() 方法用于把数组中的所有元素转换一个字符串。元素是通过指定的分隔符进行分隔的。

例如1:

var fruits = ["Banana", "Orange", "Apple", "Mango"];

var energy = fruits.join();

console.log(energy); // Banana,Orange,Apple,Mango

例如2:

var fruits = ["Banana", "Orange", "Apple", "Mango"];

var energy = fruits.join(" and ");

console.log(energy);// Banana and Orange and Apple and Mango

  • isArray() 方法用于判断一个对象是否为数组。如果对象是数组返回 true,否则返回 false。

语法:Array.isArray(obj)

例如:

var foods = ["banana", "apple"];

Array.isArray(foods);

  • map() 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。

因为map生成一个新数组,当你不打算使用返回的新数组却使用map是违背设计初衷的,请用forEach或者for-of替代。

语法:array.map(function(currentValue,index,arr), thisValue)

callback 函数会被自动传入三个参数:数组元素,元素索引,原数组本身。

map 不修改调用它的原数组本身(当然可以在 callback 执行时改变原数组)

例如1:

var numbers = [1, 4, 9];
var roots = numbers.map(Math.sqrt);
// roots的值为[1, 2, 3], numbers的值仍为[1, 4, 9]

例如2:下面代码展示了如何去遍历用 querySelectorAll 得到的动态对象集合。在这里,我们获得了文档里所有选中的选项,并将其打印:

var elems = document.querySelectorAll('select option:checked');
var values = Array.prototype.map.call(elems, function(obj) {
  return obj.value;
});

  • pop() 方法用于删除数组的最后一个元素并返回删除的元素。

注意:此方法改变数组的长度!

例如:

let myFish = ["angel", "clown", "mandarin", "surgeon"];

let popped = myFish.pop();

console.log(myFish); 
// ["angel", "clown", "mandarin"]

console.log(popped); 
// surgeon

  • shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。

注意: 此方法改变数组的长度!

语法:array.shift()

例如:

const array1 = [1, 2, 3];  

const firstElement = array1.shift();  

console.log(array1); // [2, 3]  

console.log(firstElement); //  1

  • slice() 方法返回一个新的数组对象,这一对象是一个由 beginend 决定的原数组的浅拷贝包括 begin,不包括end)。原始数组不会被改变。

语法:array.slice(start,end)

 begin:可选。如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。如果省略 begin,则 slice 从索引 0 开始。

end: 可选。提取终止处的索引(从 0 开始),在该索引处结束提取原数组元素。slice 会提取原数组中索引从 beginend 的所有元素(包含 begin,但不包含 end)。

例如:

slice(1,4) 会提取原数组中从第二个元素开始一直到第四个元素的所有元素 (索引为 1, 2, 3的元素)。

  • some() 方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。

语法:array.some(function(currentValue,index,arr),thisValue)

例如:

const array = [1, 2, 3, 4, 5]; 

const even = (element) => element % 2 === 0;

console.log(array.some(even)); // true

  • sort() 方法用原地算法对数组的元素进行排序,并返回数组。默认排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的

语法:array.sort(sortfunction)

例如:

var points = [40,100,1,5,25,10];

points.sort(); //  [1, 10, 100, 25, 40, 5]

points.sort(function(a,b){return a-b}); // [1, 5, 10, 25, 40, 100]

  • splice() 方法用于添加或删除数组中的元素。

注意:这种方法会改变原始数组。

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

index:必需。规定从何处添加/删除元素。
howmany:可选。规定应该删除多少元素。必须是数字,但可以是 "0"。
item1, ...,itemX可选。要添加到数组的新元素

例如1:从第 2 位开始删除 0 个元素,插入“drum” 和 "guitar"

var myFish = ["angel", "clown", "mandarin", "sturgeon"];
var removed = myFish.splice(2, 0, "drum");

// 运算后的 myFish: ["angel", "clown", "drum", "mandarin", "sturgeon"]
// 被删除的元素: [], 没有元素被删除

例如2:从第 3 位开始删除 1 个元素

var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
var removed = myFish.splice(3, 1);

// 运算后的 myFish: ["angel", "clown", "drum", "sturgeon"]
// 被删除的元素: ["mandarin"]

例如3:从第 0 位开始删除 2 个元素,插入"parrot"、"anemone"和"blue"

var myFish = ['angel', 'clown', 'trumpet', 'sturgeon'];
var removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue');

// 运算后的 myFish: ["parrot", "anemone", "blue", "trumpet", "sturgeon"]
// 被删除的元素: ["angel", "clown"]

  • unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。

注意: 该方法将改变数组的数目。

语法: array.unshift(item1,item2, ...itemX)

例如:

let arr = [4,5,6];
arr.unshift(1,2,3);
console.log(arr); // [1, 2, 3, 4, 5, 6]

arr = [4,5,6]; // 重置数组
arr.unshift(1);
arr.unshift(2);
arr.unshift(3);
console.log(arr); // [3, 2, 1, 4, 5, 6]

  • toString() 方法可把数组转换为字符串,并返回结果。

注意: 数组中的元素之间用逗号分隔。

语法:array.toString()

例如:

const array1 = [1, 2, 'a', '1a']; 

console.log(array1.toString()); // expected output: "1,2,a,1a"