2、Js 常用数组方法总结(持续添加)

const arr = [1,2,3,4,5,6,7]

  1. filter:过滤器,返回符合条件的元素组成的新数组
let result = arr.filter(item => item > 3)  // [4, 5, 6, 7]
console.log(result) // [4, 5, 6, 7]
  1. 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]
  1. 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
  1. 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 
  1. forEach:对数组的每个元素执行一次给定的函数,该方法没有返回值
    -> 除了抛出异常以外,没有办法中止或跳出 forEach() 循环。
  2. 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}
  1. reverse:颠倒数组的顺序
aaa.reverse() //[7, 6, 5, 4, 3, 2, 1]
  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
  1. toString:返回一个字符串,表示指定的数组及其元素。
ooo.toString() //"1,2,3,4,5,6,7"
  1. 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)
});
  1. 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}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值