数组
常用方法
push()
:在数组末尾添加一个或多个元素,并返回新的数组长度。pop()
:删除数组的最后一个元素,并返回被删除的元素。shift()
:删除数组的第一个元素,并返回被删除的元素。unshift()
:在数组开头添加一个或多个元素,并返回新的数组长度。slice(start, end)
:返回一个新的数组,包含从start
到end
(不包括end
)的元素。splice(start, deleteCount, item1, item2,...)
:在指定位置添加或删除元素。concat()
:连接两个或多个数组,并返回一个新的数组。join(separator)
:将数组的所有元素连接成一个字符串,通过指定的分隔符分隔。reverse()
:反转数组的元素顺序。sort()
:对数组元素进行排序。includes(item)
:检查数组是否包含指定的元素,返回true
或false
。indexOf(item)
:返回指定元素在数组中的第一个索引,如果不存在则返回-1
。lastIndexOf(item)
:返回指定元素在数组中的最后一个索引,如果不存在则返回-1
。forEach(callback)
:对数组的每个元素执行指定的函数。map(callback)
:创建一个新数组,其结果是对原数组的每个元素调用提供的函数后的返回值。filter(callback)
:创建一个新数组,其中包含通过提供的函数实现的测试的所有元素。reduce(callback, initialValue)
:对数组中的每个元素执行一个提供的 reducer 函数,将其结果汇总为单个返回值。some(callback)
:检查数组中是否至少有一个元素通过提供的函数实现的测试,返回true
或false
。every(callback)
:检查数组中的所有元素是否都通过提供的函数实现的测试,返回true
或false
。
循环遍历数组的方法
for
循环:
for(let i = 0; i < array.length; i++) {
// 在这里访问数组元素 array[i]
console.log(array[i]);
}
这是最基本的循环方式。通过定义一个索引变量 i
,从 0 开始,每次循环增加 1,直到索引小于数组的长度。在循环体中,可以通过 array[i]
来访问每个元素。
2.for...of
循环:
for (let element of array) {
// 在这里访问数组元素 element
console.log(element);
}
for...of
循环会遍历可迭代对象(包括数组)的值。每次循环,变量 element
都会被赋值为数组中的下一个元素。
forEach
方法:
array.forEach(function(element, index, array) {
// 在这里访问数组元素 element 和索引 index
console.log(element);
});
forEach
方法为数组的每个元素执行一次提供的函数。这个函数接受三个参数:当前元素、当前元素的索引和数组本身。
map
方法:
let newArray = array.map(function(element, index, array) {
// 对每个元素进行处理并返回新的值
return element * 2;
});
map
方法创建一个新数组,其元素是对原数组的每个元素调用提供的函数后的返回值。
filter
方法:
let filteredArray = array.filter(function(element, index, array) {
// 根据条件返回 true 或 false,决定元素是否保留
return element > 5;
});
filter
方法创建一个新数组,其中包含通过提供的函数实现的测试的所有元素。
reduce
方法:
let result = array.reduce(function(accumulator, currentValue, currentIndex, array) {
// 对每个元素进行累积计算
return accumulator + currentValue;
}, initialValue);
reduce
方法对数组中的每个元素执行一个提供的 reducer
函数(升序执行),将其结果汇总为单个返回值。reducer
函数接受四个参数:累计器、当前值、当前索引和数组本身。第二个参数 initialValue
是可选的,用于指定初始的累计器值。
some
、every
也会遍历数组,但它们不一定会执行完整个数组的遍历,一旦有满足条件的元素就会终止循环操作
字符串
常用方法
charAt(index)
:返回指定索引位置的字符。charCodeAt(index)
:返回指定索引位置字符的 Unicode 值。concat(str1, str2,...)
:连接两个或多个字符串。indexOf(searchValue, fromIndex)
:返回指定字符串在原字符串中首次出现的索引,如果未找到则返回 -1。lastIndexOf(searchValue, fromIndex)
:返回指定字符串在原字符串中最后一次出现的索引,如果未找到则返回 -1。slice(start, end)
:提取字符串的一部分并返回新字符串。substr(start, length)
:从指定位置开始提取指定长度的字符并返回新字符串。substring(start, end)
:提取字符串在两个指定索引之间的部分并返回新字符串。toLowerCase()
:将字符串转换为小写。toUpperCase()
:将字符串转换为大写。split(separator, limit)
:通过指定的分隔符将字符串分割成数组。replace(searchValue, replacement)
:替换字符串中的匹配项。trim()
:去除字符串两端的空格。startsWith(searchString, position)
:检查字符串是否以指定的字符串开头。endsWith(searchString, length)
:检查字符串是否以指定的字符串结尾。includes(searchString, position)
:检查字符串是否包含指定的子字符串。match(regexp)
:使用正则表达式在字符串中查找匹配项,并返回一个数组。search(regexp)
:使用正则表达式搜索字符串,并返回匹配的起始索引。
字符串截取的方法对比
slice(start, end)
方法:
-
start
:必需。指定开始提取字符的位置。如果为负数,则从字符串末尾开始计数(例如,-1
表示最后一个字符)。end
:可选。指定结束提取字符的位置(不包括该位置的字符)。如果省略,则提取到字符串末尾。如果为负数,则从字符串末尾开始计数。
let str = "Hello World";
let result1 = str.slice(0, 5); // "Hello"
let result2 = str.slice(-5); // "World"
substring(start, end)
方法:
-
- 与
slice
方法类似,但start
和end
不能为负数。如果为负数,会被当作 0 处理。
- 与
let str = "Hello World";
let result3 = str.substring(0, 5); // "Hello"
substr(start, length)
方法:
-
start
:必需。指定开始提取字符的位置。如果为负数,则从字符串末尾开始计数。length
:可选。指定提取的字符数量。
let str = "Hello World";
let result4 = str.substr(6, 5); // "World"
let result5 = str.substr(-5, 5); // "World"
总结:slice
方法在处理负数索引时更灵活,而 substring
方法要求索引不能为负数。substr
方法则通过指定起始位置和长度来截取字符串。