const arr = [1,2,3,4,5,6,7]
- filter:过滤器,返回符合条件的元素组成的新数组
let result = arr.filter(item => item > 3) // [4, 5, 6, 7]
console.log(result) // [4, 5, 6, 7]
- map:创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
let result1 = arr.map(item => item > 3)
let result2 = arr.map(item => item * 3)
console.log(result1) // [false, false, false, true, true, true, true]
console.log(result2) //[3, 6, 9, 12, 15, 18, 21]
- every:测试一个数组内的所有元素是否都能通过某个指定函数,若所有元素都通过测试,则返回true,否则返回false
const result1 = arr.every(item => item > 3)
const result2 = [].every(item => item > 3)
console.log(result1) //false
console.log(result2) //true 空数组必定返回true
- some:测试数组中是不是至少有1个元素通过了被提供的函数测试,有1个元素满足条件,则返回true,否则返回false
const result1 = arr.some(item => item > 3)
const result2 = [].some(item => item > 3)
console.log(result1) //true
console.log(result2) //fasle 空数组必定返回fasle
- forEach:对数组的每个元素执行一次给定的函数,该方法没有返回值
-> 除了抛出异常以外,没有办法中止或跳出 forEach() 循环。 - concat: 连接两个或更多数组,并返回结果。该方法属于浅拷贝。
const arr1 = arr.concat([8,9],[10])
console.log(arr1) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
//验证浅拷贝
const test = [{name: 'xm', age: 12},{name: 'xx', age: 13},{name: 'xc', age: 22},{name: 'xv', age: 16},]
const result= test.concat([])
result[0].name = 'xn'
console.log(result[0]) // {name: "hh", age: 12}
console.log(test[0]) //{name: "hh", age: 12}
- reverse:颠倒数组的顺序
aaa.reverse() //[7, 6, 5, 4, 3, 2, 1]
- join:将所有数组元素连接成一个字符串
aaa.join('/') // "7/6/5/4/3/2/1"
10.valueof: 返回值为该对象的原始值。
ooo.valueOf() // [1,2,3,4,5,6,7]
// new一个Boolean对象
var newBool = new Boolean(true);
// valueOf()返回的是true,两者的值相等
console.log(newBool.valueOf() == newBool); // true
// 但是不全等,两者类型不相等,前者是boolean类型,后者是object类型
console.log(newBool.valueOf() === newBool); // false
// new一个字符串对象
var str2 = new String("http://www.xyz.com");
// 两者的值相等,但不全等,因为类型不同,前者为string类型,后者为object类型
console.log( str2.valueOf() === str2 ); // false
- toString:返回一个字符串,表示指定的数组及其元素。
ooo.toString() //"1,2,3,4,5,6,7"
- sort: 用原地算法对数组的元素进行排序,并返回排序完的数组。默认排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的
let items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 },
{ name: 'And', value: 45 },
{ name: 'The', value: -12 },
{ name: 'Magnetic' },
{ name: 'Zeros', value: 37 }
];
// 按照每个对象的value值 升序进行排序
items.sort(function (a, b) {
return (a.value - b.value)
});
//降序
items.sort(function (a, b) {
return (b.value - a.value)
});
- reduce:累加器函数,
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
/* 接收四个参数
accumulator:累计器累计回调的返回值; 它是上一次调用回调时返回的累积值(必需)
currentValue:数组中正在处理的元素。(必需)
index:当前元素的索引。如果提供了initialValue,则起始索引号为0,否则从索引1起始。(可选)
array: 调用reduce的数组(可选)
initialValue: 作为第一次调用 callback函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。(可选)
*/
const names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice']
const countedNames = names.reduce(function (allNames, name) {
if (name in allNames) {
allNames[name]++;
}
else {
allNames[name] = 1;
}
return allNames;
}, {});
console.log(countedNames) //{Alice: 2, Bob: 1, Tiff: 1, Bruce: 1}