Skip to content

JavaScript 被忽略的特性

数组

Array.from

INFO

Array.from 可以添加一个回调函数,新数组每个成员都会执行此函数

js
// 转换小写字母表为大写字母表
const alphabet = "abcdefghijklmnopqrstuvwxyz"

const uppercase = Array.from(alphabet, (char) => {
    return char.toUpperCase()
})

console.log(uppercase.join('')) // ABCDEFGHIJKLMNOPQRSTUVWXYZ

JSON

MDN 文档

JSON 的 parse 方法可以接受一个 reviver 函数做数据的预处理
receiver 的执行顺序:从最内层开始,按照层级顺序,依次向外遍历

js
// 普通使用
const attr = JSON.parse('{"name":"nickel", "age": 18}')
if (attr.age <= 20) attr.age = 'young'

// 升级版
const attr = JSON.parse('{"name":"nickel", "age": 18}', (k, v) => {
    if (k === 'age' && v <= 20) return 'young'
    return v
})
console.log(attr)

INFO

无独有偶,JSON 的 stringify 方法可以接受一个 replacer 函数做数据处理

  • 如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;
  • 如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中;
  • 如果该参数为 null 或者未提供,则对象所有的属性都会被序列化。