js常用内置函数

 

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]

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值