JavaScript学习笔记-Array相关方法的使用

2020-09-22  本文已影响0人  LazyLoad

sort()方法的使用

var values = [0, 1, 5, 10, 15]
values.sort()
console.log(values) // [0, 1, 10, 15, 5]
// 例子中值得顺序本身没有问题,调用sort()方法也会根据字符串的结果改变原来的顺序。
// 数值5虽然小于10,但在进行字符串比较的时候"10" 在 "5" 的前面,所以数组的顺序就被修改了
var values = [0, 1, 5, 10, 15]
values.sort((value1, value2) => {
  if (value1 < value2) {
    return -1
  } else if (value1 > value2) {
    return 1
  } else {
    return 0
  }
})
console.log(values)
// [0, 1, 5, 10, 15]
var objs = [
  {name: "Kobe", age: 42},
  {name: "YaoMing", age: 40},
  {name: "Lebron", age: 36}
]

objs.sort((obj1, obj2) => {
  return obj1.age - obj2.age
})

console.log(objs)
// 0: {name: "Lebron", age: 36}
// 1: {name: "YaoMing", age: 40}
// 2: {name: "Kobe", age: 42}

splice()方法的使用

const names = ["姚明", "王治郅", "易建联", "科比", "詹姆斯"]
names.splice(1, 2)
console.log(names) // ["姚明", "科比", "詹姆斯"]
const names = ["姚明", "王治郅", "易建联", "科比", "詹姆斯"]
names.splice(1, 2, "霍华德", "安东尼")
console.log(names) // ["姚明", "霍华德", "安东尼", "科比", "詹姆斯"]
const names = ["姚明", "王治郅", "易建联", "科比", "詹姆斯"]
names.splice(1, 0, "霍华德", "安东尼")
console.log(names) // ["姚明", "霍华德", "安东尼", "王治郅", "易建联", "科比", "詹姆斯"]

高阶函数的使用

定义3个需求:

需求1:定义一个数字数组nums,找出数组中数值小于100的数字,放入一个新数组中newNums

需求2:将新数组(newNums)中的数字都乘以2,放入新的数组doubleNums

需求3:将doubleNums中的数字进行汇总求和

const nums = [10, 20, 30, 289, 2332, 40]
const newNums = []
for (let n of nums) {
  if (n < 100) {
    newNums.push(n)
  }
}
console.log(newNums) // [10, 20, 30, 40]

const doubleNums = []
for (let n of newNums) {
  doubleNums.push(n * 2)
}
console.log(doubleNums) // [20, 40, 60, 80]

let total = 0
for (let n of doubleNums) {
  total += n
}
console.log(total) // 200
// 使用filter()函数改写需求1
const nums = [10, 20, 30, 289, 2332, 40]
const newNums = nums.filter((n) => {
  return n < 100
})
console.log(newNums); // [10, 20, 30, 40]
// 使用map()函数改写需求2
const doubleNums = newNums.map((n) => {
  return n * 2
})
console.log(doubleNums) // [20, 40, 60, 80]
// 使用reduce()函数改写需求3
const total = doubleNums.reduce((previousValue, n) => {
  return previousValue + n
}, 0)
console.log(total)  // 200
const nums = [10, 20, 30, 289, 2332, 40]
const total = nums.filter((n) => {
  return n < 100
}).map((n) => {
  return n * 2
}).reduce((previousValue, n) => {
  return previousValue + n
}, 0)
console.log(total) // 200

持续更新~~~

上一篇 下一篇

猜你喜欢

热点阅读