数组基础

172 阅读1分钟

Array.from(obj[, mapFn, thisArg])

可选的第二个参数 mapFn 可以是一个函数,该函数会在对象中的元素被添加到数组前,被应用于每个元素,此外 thisArg 允许我们为该函数设置 this

// 假设 range 来自上文例子中

// 求每个数的平方
let arr = Array.from(range, num => num * num);

alert(arr); // 1,4,9,16,25

Array.from 依赖于字符串的可迭代特性

也可以像 for...of 一样正确处理代理对(UTF-16 扩展字符)

Array.from 使用 for...of 来实现:

let str = '𝒳😂';

let chars = []; // Array.from 内部执行相同的循环
for (let char of str) {
  chars.push(char);
}

alert(chars);

Object.keys/values/entries 会忽略 symbol 属性

就像 for..in 循环一样,这些方法会忽略使用 Symbol(...) 作为键的属性。

通常这很方便。但是,如果我们也想要 Symbol 类型的键,那么这儿有一个单独的方法 Object.getOwnPropertySymbols,它会返回一个只包含 Symbol 类型的键的数组。另外,还有一种方法 Reflect.ownKeys(obj),它会返回 所有 键。