js常用内置函数常用功能汇总
map
map()
方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
语法:
var new_array = arr.map(function callback(currentValue[, index[, array]]) {
// Return element for new_array }[,thisArg])
callback
函数会被自动传入三个参数:正在处理的数组元素,正在处理的元素索引(可选),原数组本身(可选)。
thisArg可选。执行 callback
时的用于 this
的值。(可选)
实例:
基本用法(1)
var numbers = [1, 4, 9];
var roots = numbers.map(Math.sqrt);
// roots的值为[1, 2, 3], numbers的值仍为[1, 4, 9]
使用 map 重新格式化数组中的对象
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.value;
return rObj;
});
// reformattedArray 数组为: [{1: 10}, {2: 20}, {3: 30}],
// kvArray 数组未被修改:
// [{key: 1, value: 10},
// {key: 2, value: 20},
// {key: 3, value: 30}]
var a = Array.prototype.map.call("Hello World", function(x) {
return x.charCodeAt(0);
})
// a的值为[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]
filter
filter()
方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
语法:
var new_array = arr.filter(callback(element[, index[, array]])[, thisArg])
callback
函数会被自动传入三个参数:正在处理的数组元素,正在处理的元素索引(可选),原数组本身(可选)。
thisArg可选。执行 callback
时的用于 this
的值。(可选)
基本用法(1)
//下例使用 filter 创建了一个新数组,该数组的元素由原数组中值大于 10 的元素组成。
function isBigEnough(element) {
return element >= 10;
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// filtered is [12, 130, 44]
///在数组中搜索包含某个词组的
var fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];
/**
* Array filters items based on search criteria (query)
*/
function filterItems(query) {
return fruits.filter(function(el) {
return el.toLowerCase().indexOf(query.toLowerCase()) > -1;
})
}
console.log(filterItems('ap')); // ['apple', 'grapes']
console.log(filterItems('an')); // ['banana', 'mango', 'orange']
///es6的写法
const filterItems = (query) => {
return fruits.filter((el) =>
el.toLowerCase().indexOf(query.toLowerCase()) > -1
);
}
reduce
reduce()
方法对累计器和数组中的每个元素(从左到右)应用一个函数,将其简化为单个值。
语法:
arr.reduce(callback,[initialValue])
callback执行数组中每个值的函数,包含四个参数:
accumulator
累计器-累计回调的返回值; 它是上一次调用回调时返回的累积值,或initialValue
(见于下方)。
currentValue
数组中正在处理的元素。
currentIndex(
可选)
数组中正在处理的当前元素的索引。 如果提供了initialValue
,则起始索引号为0,否则为1。
array(
可选)
调用reduce()
的数组
initialValue(
可选)
作为第一次调用 callback函数时
的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。
基本用法:
[0, 1, 2, 3, 4].reduce(function(prev, curr){
return prev + curr
})
//es6写法,返回10
[0, 1, 2, 3, 4].reduce((prev, curr) => prev + curr );
///带initialValue参数的,返回20
[0, 1, 2, 3, 4].reduce((accumulator, currentValue, currentIndex, array) => { return accumulator + currentValue; }, 10 );
slice
slice()
方法提取一个字符串的一部分,并返回一新的字符串。
语法:
str.slice(beginSlice[, endSlice])
beginSlice 从该索引(以 0 为基数)处开始提取原字符串中的字符。如果值为负数,会被当做 sourceLength(
字符串的长度) + beginSlice
看待。
endSlice 可选,如果省略该参数,slice
会一直提取到字符串末尾。如果该参数为负数,则被看作是 sourceLength(
字符串的长度)
+ endSlice
基本用法:
var str = 'The morning is upon us.';
str.slice(-3); // returns 'us.'
str.slice(-3, -1); // returns 'us'
str.slice(0, -1); // returns 'The morning is upon us'
splice
splice()
方法通过删除现有元素和/或添加新元素来修改数组,并以数组返回原数组中被修改的内容。
语法:
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
start
指定修改的开始位置(从0计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位(从-1计数);如果负数的绝对值大于数组的长度,则表示开始位置为第0位。
deleteCount
可选,整数,表示要移除的数组元素的个数。如果 deleteCount
是 0或者负数,则不移除元素。这种情况下,至少应添加一个新元素。
item1, item2, ...
可选,要添加进数组的元素,从start
位置开始。如果不指定,则 splice()
将只删除数组元素。
基本语法:
从第2位开始删除1个元素,然后插入“trumpet”
var myFish = ['angel', 'clown', 'drum', 'sturgeon'];
var removed = myFish.splice(2, 1, "trumpet");
//运算后的myFish: ["angel", "clown", "trumpet", "surgeon"]
//被删除元素数组:["drum"]
replace
replace()
方法返回一个由替换值替换一些或所有匹配的模式后的新字符串。模式可以是一个字符串或者一个正则表达式, 替换值可以是一个字符串或者一个每次匹配都要调用的函数。原字符串不会改变。
语法:
str.replace(regexp|substr, newSubStr|function)
regexp
(pattern)
一个RegExp
对象或者其字面量。该正则所匹配的内容会被第二个参数的返回值替换掉。
substr
(pattern)
一个要被 newSubStr
替换的
字符串
。其被视为一整个字符串,而不是一个正则表达式。仅仅是第一个匹配会被替换。
newSubStr
(replacement)
用于替换掉第一个参数在原字符串中的匹配部分的字符串
。该字符串中可以内插一些特殊的变量名。
function
(replacement)
一个用来创建新子字符串的函数,该函数的返回值将替换掉第一个参数匹配到的结果。
基本用法:
/交换字符串中的两个单词
var re = /(\w+)\s(\w+)/;
var str = "John Smith";
var newstr = str.replace(re, "$2, $1");
// Smith, John
console.log(newstr);
push
push()
方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度。
arr.push(element1, ..., elementN)
shift
shift()
方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
arr.shift()
unshift
unshift()
方法将一个或多个元素添加到数组的开头,并返回该数组的新长度。
arr.unshift(element1, ..., elementN)
基本用法:
var arr = [1, 2];
arr.unshift(0); //result of call is 3, the new array length
//arr is [0, 1, 2]
arr.unshift(-2, -1); // = 5
//arr is [-2, -1, 0, 1, 2]
arr.unshift( [-3] );
//arr is [[-3], -2, -1, 0, 1, 2]