将一个对象的键值进行调换

2020-07-28 描述在不修改的情况下,将一个对象中的键值对进行转换。转换后的值和每一个将要被转换的键相对应,他们是值相同的所有键组成的一个数组。如果提供了函数,则将该函数应用于每一个被转换了的键上。提示使用 Object.keys()和 Array.prototype.reduce()来转换一个对象中的键值对如果提供了函数的话,则进行调用第二个参数 fn 为可选值,应用于每一个被转换的键。默认为不运行。

如何实现一个单例用 JavaScript

2020-07-27 描述单例是一种面向对象的软件设计模式,用来确保给定的类只能被实例化一次,这在很多不同的情况下都非常有用,例如创建在应用程序之间共享的全局对象和组件。虽然 JavaScript 支持面向对象编程,但他并没有提供许多简单的方式来实现这个模式。说明 Proxyobject 虽然某些方面比较超前,但他最容易扩展。Proxy 对象可用于定义所谓的 traps,这些方法允许为某些操作,如属性查找、赋值等

给定的多层键是否存在 JSON 对象中

2020-07-23 描述如果一个 JSON 对象中存在给定的目标键值就返回 true,否则的话返回 false。提示首先检查给定的 keys 是否为一个非空数组,如果为空的话,则提前返回 false 使用 Array.prototype.every()按顺序依次检查给定的每一个键是否都存在于 obj 对象的深层次中使用 Object.prototype.hasOwnProperty()检查 obj 是否没有拥有当前的键,使用 t

JavaScript - 将对象按照节点路径逐层展开

2020-07-16 描述使用路径做为键,将对象进行展开。提示使用递归对 Object.keys(obj)使用 Array.prototype.reduce(),以便将每一个叶子节点转换为展开的路径节点如果一个键的值为对象,函数将进行自身调用,使用适当的 prefix 通过 Object.assign()来创建路径如果一个键的值不为对象,将通过累加器对象为键值对添加适当的前缀第二个参数 prefix 可以为每一个键

JavaScript - 获取对象中满足条件的最后一个键

2020-07-15 描述迭代对象中的所有属性,如果其值有满足所提供的测试函数,则返回该对象的最后一个属性。否则的话返回 undefined。提示使用 Object.keys(obj)获取对象的所有属性使用 Array.prototype.reverse()进行反向排序使用 Array.prototype.find()对每一对键-值使用提供的函数进行测试回调函数接受三个参数-值,键和对象代码 constfind

JavaScript - 数组 for 循环,reduce 及方法链剖析

2020-07-13 描述对数组的 for 循环,reduce 和方法链进行不同纬度的比对。循环说明 for 循环中 for...in、for...of 和 forEach 的不同点由于函数式编程的流行,目前使用率有所下降可以对迭代进行控制,如跳过元素或提前 return 返回的结果数组需要在循环外预先声明使用 Array.prototype.push()或扩展运算符...来进行元素的添加 O(N)复杂度,每一个元素只能迭代一

JavaScript - 深度对比

2020-07-09 描述对两个值进行深度对比,以判断他们是否相等。提示检查两个值是否全等如果他们都表示为同一时间的 Date 对象,则需使用 Date.getTime()进行检测如果他们的值都不是对象的话,需要使用全等(严格比较)进行检测检查其中的一个值是否为 null 或者 undefined 检查他们的属性是否不同如果以上条件都不满足,就需要使用 Object.keys()来检测他们是否有相同数量的键最后需通过