前端面试-数组相关的常用js方法

数组在js里是一种常见的对象类型,而js版本的不同,原生提供操作数组的方法也很多,下面列出了一些常用但你可能陌生的方法,说不定面试的时候会被考到呢~

push:向数组的末尾添加一个或更多元素,并返回新的长度

arrayObject.push(newelement1,newelement2,....,newelementX)

pop:删除数组的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则不改变数组,并返回 undefined 值。

arrayObject.pop()

shift:用于把数组的第一个元素从其中删除,并返回第一个元素的值

arrayObject.shift()

unshift:向数组的开头添加一个或更多元素,并返回新的长度

arrayObject.unshift(newelement1,newelement2,....,newelementX)
// newelement1必需。向数组添加的第一个元素。
// newelement2可选。向数组添加的第二个元素。
// newelementX可选。可添加若干个元素。

join:用于把数组中的所有元素放入一个字符串

arrayObject.join(separator) //separator
可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。

toString:把数组转换为字符串,并返回结果(数组中的元素之间用逗号分隔)

object.toString()

toLocaleString:把数组转换为本地字符串,使用地区特定的分隔符把生成的字符串连接起来,形成一个字符串

arrayObject.toLocaleString()
// 比如金钱格式化
(23333333).toLocaleString('en-US')

slice:从已有的数组中返回选定的元素(返回一个新数组)

arrayObject.slice(start,end) 
//start必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素
//end可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

splice:从数组中添加或删除项目,然后返回被删除的项目

arrayObject.splice(index,howmany,item1,.....,itemX)
// index必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
// howmany必需。要删除的项目数量。如果设置为 0,则不会删除项目。
// item1, ..., itemX可选。向数组添加的新项目。
// 返回值是包含被删除项目的新数组,如果有的话。

concat:用于连接两个或多个数组

arrayObject.concat(arrayX,arrayX,......,arrayX)

sort:用于对数组的元素进行排序

arrayObject.sort(sortby) //sortby 可选。规定排序顺序。必须是函数。

reverse:颠倒数组中元素的顺序

arrayObject.reverse() //该方法会改变原来的数组,而不会创建新的数组。

map

//将所有的数组元素转换为大写:
var strings = ["hello", "Array", "WORLD"];
function makeUpperCase(v)
{
    return v.toUpperCase();
}
var uppers = strings.map(makeUpperCase);
// uppers is now ["HELLO", "ARRAY", "WORLD"]
// strings is unchanged
//结果: HELLO, ARRAY, WORLD

some:对数组中的每个元素都执行一次指定的函数(callback),直到此函数返回 true,如果发现这个元素,some 将返回 true,如果回调函数对每个元素执行后都返回 false ,some 将返回 false。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略。

//检查是否有数组元素大于等于10:
function isBigEnough(element, index, array) {
    return (element >= 10);
}
var passed = [2, 5, 8, 1, 4].some(isBigEnough);
// passed is false
passed = [12, 5, 8, 1, 4].some(isBigEnough);
// passed is true

every:对数组中的每个元素都执行一次指定的函数(callback),直到此函数返回 false,如果发现这个元素,every 将返回 false,如果回调函数对每个元素执行后都返回 true ,every 将返回 true。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略

//测试是否所有数组元素都大于等于10:
function isBigEnough(element, index, array) {
    return (element >= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough);
// passed is false
passed = [12, 54, 18, 130, 44].every(isBigEnough);
// passed is true

reduce:对数组中的所有元素调用指定的回调函数。该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供。

array1.reduce(callbackfn[, initialValue])
// array1:必需。一个数组对象。
// callbackfn:必需。一个接受最多四个参数的函数。对于数组中的每个元素,reduce 方法都会调用 callbackfn 函数一次。
// initialValue:可选。如果指定 initialValue,则它将用作初始值来启动累积。第一次调用 callbackfn 函数会将此值作为参数而非数组值提供。

forEach

//打印数组内容:
function printElt(element, index, array) {
    document.writeln("[" + index + "] is " + element + "<br />");
}
[2, 5, 9].forEach(printElt);
// Prints:
// [0] is 2
// [1] is 5
// [2] is 9

filter:对数组中的每个元素都执行一次指定的函数(callback),并且创建一个新的数组,该数组元素是所有回调函数执行时返回值为 true 的原数组元素。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略,同时,新创建的数组也不会包含这些元素。

var filteredArray = array.filter(callback[, thisObject]);
// callback: 要对每个数组元素执行的回调函数。
// thisObject : 在执行回调函数时定义的this对象。

toSource:表示对象的源代码

object.toSource()

valueOf:返回 Array 对象的原始值

arrayObject.valueOf()



本文由 w3cmark_前端笔记 版权所有,转载时请注明出处。
注明出处格式:w3cmark (http://www.w3cmark.com/2017/569.html)

分享到:

关注w3cmark
微信公众号 w3cmark_com