首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

嵌套结构取值时如何编写兜底逻辑

嵌套结构取值时如何编写兜底逻辑 github总基地:http://www.github.com/dashnowords/blogs 博客园地址:《大史住在大前端》原创博文目录 掘金地址:https...• 路径中有null或undefined时,即使有后续取值路径,也不会报错,而是返回默认值 • 如果取到的值为null,则返回null(不会触发默认值),所以对于期望类型为数组类型的,下一步如果想调用原生数组方法...• 路径中有null或undefined时,即使有后续取值路径,也不会报错,而是返回默认值 • 最终结果为undefined或null时都返回默认值(和lodash.get的区别) • MDN关于可选链的描述...result5); // defaultValue console.log(result6); // defaultValue 方案3——利用函数式编程实现get方法 原文可见:如何优雅安全地在深层数据结构取值..._a$b$c$d : "defaultValue"; 基本逻辑可以按括号内往外看,并不复杂,就是每次取属性都对undefined和null进行了容错处理。

2.9K10
您找到你想要的搜索结果了吗?
是的
没有找到

Google 搜索结果屏蔽无价值网址

因为以前工作的需要,所接触的领域必须在 Google 才能搜索到相关资源,国内是给屏蔽掉的。从那时开始习惯使用 Google,也不得不说它的确比国内的搜索引擎涉及的面更广,得到的有价值信息更多。...但它也不是没有缺点的,当你搜索一些中文资料时,几乎每一个搜索结果页中都会看到一些相同的网站,比如“无极吧”等类似这些无价值的网站,点进去以后实际内容与你想要的根本不符,这些无价值网站浪费了我们太多的时间...所以就有了如何在搜索结果屏蔽无价值网站的想法。 在网络上搜索了一下,据说 Google 开始是有这个功能的,但是最后还是去掉了,原因未知。...但 Google 为 Chrome 提供了一款插件 Personal Blocklist 可以实现这个需求,只要在 Chrome 安装这个插件,并在插件输入你希望屏蔽的网址,那么在 Google 的搜索结果中就会自动屏蔽这些网站...Github 项目中提供的垃圾网站屏蔽列表来使用:https://github.com/Feiox/useless-websites,这里收录了一些常见的无价值网站、钓鱼网站等,导入后 Google 的搜索结果瞬间就清净了

5.5K20

ES13 的 11 个惊人的 JavaScript 新特性

Object.hasOwn() 方法 在 JavaScript ,我们可以使用 Object.prototype.hasOwnProperty() 方法来检查对象是否具有给定的属性。...一方面, Object.prototype.hasOwnProperty() 方法不受保护 - 它可以通过为类定义自定义 hasOwnProperty() 方法来覆盖,该方法可能具有与 Object.prototype.hasOwnProperty...虽然 find() 和 findIndex() 都从数组的第一个元素开始搜索,但在某些情况下,最好最后一个元素开始搜索。 在某些情况下,我们知道最后一个元素查找可能会获得更好的性能。...例如,这里我们试图在数组取值 prop 等于 y 的项目。...value: 'y' }console.log(foundIndex); // 3 这行得通,但是由于目标对象更靠近数组的尾部,如果我们使用 findLast() 和 findLastIndex() 方法末尾搜索数组

68220

了解ECMAScript规范,第1部分

为了描述 Object.prototype.hasOwnProperty 的工作方式,该规范使用了类似伪代码的描述: Object.prototype.hasOwnProperty(V) 当使用参数 V...语言类型和规范类型 让我们看上去熟悉的东西开始。规范使用了我们 JavaScript 已经知道的值,例如 undefined,true 和 false。...最著名的外部对象是 Array,因为其 length 属性以非默认方式运行:设置 length 属性可以 Array 删除元素。...注1:规格在这方面并不完全一致;有些辅助函数返回裸值,并且其返回值按原样使用,而无需“完成记录”中提取值。通常从上下文中可以清楚地看出这一点。... Object.prototype.hasOwnProperty 开始的函数调用图 有用的链接 如何阅读 ECMAScript 规范(https://timothygu.me/es-howto/):该教程从一个稍微不同的角度涵盖了本文中的许多内容

79040

智能计算加速搜索,中国天眼FAST寻球状星团迄今最长周期脉冲星

天文研究者们好奇,是否有另外一类周期更长的脉冲星存在于球状星团? 寻长周期脉冲星 经过数十亿年的演化,脉冲星理应越转越慢,也就是转动周期越来越长,为何我们搜索到的大都是毫秒脉冲星?...针对长周期脉冲星探测存在的难点问题,在过去一年多时间的研究工作,周登科、中国科学院国家天文台副研究员王培、研究员李菂等人使用了一种新的搜索方案,并成功在球状星团了长周期脉冲星。...数据挖掘规律 在此次研究,团队处理了中国天眼 FAST 2019 年到 2022 年约 90 小时、总计约 50TB 的观测数据。...利用 AI 算法等智能计算技术辅助处理这些数据,可以让我们繁重的数据分析解放出来,将更多精力投入到理解数据背后的物理图像,大大提高科研效率。...「天文学家的工作就是试图天文观测数据分析中发现或验证自然的基本规律。在没有现代计算工具的时代,以开普勒为代表的天文学家便大量的天文观测数据总结出了行星运动规律。

13910

ECMAScript13 11个令人惊叹的 JavaScript 新特性

9.Object.hasOwn()方法 在 JavaScript ,我们可以使用Object.prototype.hasOwnProperty()方法来检查对象是否具有给定的属性。...首先,Object.prototype.hasOwnProperty()方法并未受到保护,这意味着我们可以通过自定义的hasOwnProperty()方法来覆盖它,而这个自定义方法可能会具有与Object.prototype.hasOwnProperty...尽管find()和findIndex()都是数组的第一个元素开始搜索,但在某些情况下,最后一个元素开始搜索可能会更有效。 有些情况下,我们知道数组的末尾进行查找可能会获得更好的性能表现。...例如,在这里我们尝试查找数组prop属性等于"value"的项目。这时候,可以通过使用reverse()方法将数组反转,然后使用find()和findIndex()方法来末尾开始搜索。...它们能够准确地定位目标对象,并且数组末尾开始搜索,提供了高效的解决方案。

23120

为什么你的网站会搜索引擎消失?

如果你从事SEO行业一段时间了,你是否偶尔会遇到这种情况,网页批量消失,搜索网站标题,完全查询不到结果,甚至输入网址查询都没有结果,那么一定是网站出问题,被搜索引擎降权了。  ...201904111554992695401473.png 那么,网站搜索引擎消失的原因有哪些呢?  ...,达到上百条:   先不说它的外链作用没有多少,它几乎可以被轻松的识别是付费链接,你值得搜索引擎很抵制人为操控链接。  ...3、频繁的修改网页标题   有的站长喜欢频繁的更改网页标题,如果你每一篇文章都是经常修改标题的话,搜索引擎会认定为你是一个极其不稳定的站点,逐渐会降低排名,时间久了,可能会索引库删除你的网址。  ...5、服务器不稳定   服务器不稳定是一个最致命的问题,它经常影响蜘蛛对网站进行爬行与索引,长时间的访问不到网站,搜索引擎会降低你站点的质量评级,时间久了,所有页面几乎都会被索引库删除。

1.3K40

理解 ECMAScript 规范(一)

下面的代码演示了 Object.prototype.hasOwnProperty 的使用: const o = { foo: 1 }; o.hasOwnProperty('foo'); // true...为了描述 Object.prototype.hasOwnProperty 是怎么工作的,ECMAScript 规范使用了伪代码来描述它: Object.prototype.hasOwnProperty...最广为人知变异对象是 Array,因为它的长度属性以非默认方式运行 —— 设置长度属性,能够数组移除一个元素。 基础的内部方法列表可以从这看到。 Completion records 那么 ?...否则我们将会 Completion Record 取值。 ReturnIfAbrupt 看起来像是一个函数的调用,但实际上并不是。...[[value]] 使用这些知识,我们可以写出 Object.prototype.hasOwnPropertyObject.prototype.hasOwnProperty(P) 1、令 P

54920

理解 ECMAScript 规范(1)

下面的代码演示了Object.prototype.hasOwnProperty的用法: const o = { foo: 1 }; o.hasOwnProperty('foo'); // true o.hasOwnProperty...为描述Object.prototype.property的工作原理,规范使用了类似伪代码的说明: Object.prototype.hasOwnProperty(V) 在以参数V调用hasOwnProperty...大家最熟悉的Array就是异质对象,因为其length属性的行为与默认行为不同:设置数组的length属性可能会数组删除元素。 这里给出了所有基本内部方法(普通对象11个,函数对象2个。...(换句话说,叹号表示正常完成记录中提取值。...——译者注 ) 知道了这些之后,就可以把前面的Object.prototype.hasOwnProperty以完整但冗余的形式重写如下: Object.prototype.hasOwnProperty(

56420

吊打前端专栏 | 吊打JavaScript之原型到原型链

代码调用过程,调用对象的某个属性时,会首先搜索对象实例本身开始,如果找到了给定名字的属性,则返回该属性的值,如果没有找到。...会第二次搜索指针指向的原型对象开始,在原型对象查找给定名字的属性,如果在原型对象查找具有给定名字的属性,就返回该属性值。 简单来说,解析器会有两问,第一次找到就一问。...person1.name返回的值来自对象实例;person2.name的取值来自原型。访问person1.name时,在实例上搜索这个名为name的属性,存在,则返回其值。...我们可以使用hasOwnProperty()方法来给指定属性判断是否存在于对象实例,存在对象实例时,返回值为true。...所有对象都有valueOf和toString方法的原因就是Object.prototype继承的。

31920

JavaScript原型与继承

根据定义,null 没有原型,并作为这个原型链的最后一个环节。 几乎所有 JavaScript 的对象都是位于原型链顶端的 Object 的实例。... ECMAScript 6 开始,[[Prototype]] 可以通过 Object.getPrototypeOf() 和 Object.setPrototypeOf() 访问器来访问。...因此, 通过doSomeInstancing 的 proto 的 proto ( 同 doSomething.prototype 的 proto (同 Object.prototype)) 来查找要搜索的属性...要检查对象是否具有自己定义的属性,而不是其原型链上的某个属性,则必须使用所有对象 Object.prototype 继承的 hasOwnProperty 方法。...A.prototype = { varA : null, /* 既然它没有任何作用,干嘛不将 varA 原型(prototype)去掉 ? 也许作为一种在隐藏类优化分配空间的考虑 ?

51610

JavaScript创建对象的多种方式和优缺点

ES6 开始支持了类和继承,但其实只是封装了 ES5.1 的构造函数和原型继承的语法糖而已。...构造函数模式 esObject 和 Array 这样的原生构造函数,可以直接在运行环境执行。而我们也可以自定义构造函数,通过这个构造函数给对象类型定义属性和方法。...首先,在 person 实例上查找是否存在 sayName 属性/方法,如果没有就继续 person 的原型上(person....但是原型上搜索值的过程是动态的,所以就算实例在修改原型之前就已经存在,任何时候对原型对象所做的修改,在实例上也会存在这个修改,看例子: let teacher = new Person(); Person.prototype.sayHi...object.hasOwnProperty(name) && (name in object); } // 测试方法 function Person() {} Person.prototype.name

23320

深入学习 JavaScript——理解原型

创建自定义的构造函数之后,其原型对象默认只会取得 constructor 属性,其它属性和方法都是 Object 继承而来的。...图中可以看出构造函数 Person 和实例 leo 之间并没有直接关系,而是通过 Person.prototype 原型对象进行关联。...Object.getPrototypeOf(leo) === Person.prototype 每当代码读取某个对象的属性时,都会执行一次搜索:首先判断实例是否具有给定名字的属性,如果没有的话,继续搜索实例的原型对象...() 与 in 操作符 hasOwnProperty 可以检测一个属性是存在于实例,还是存在于原型对象,这个方法继承自 Object 对象;无论属性存在于实例还是原型,使用 in 操作符都能得到...= 'JavaScript' Object.keys(p1) // ["name"] 可以看出,Object.keys() 方法只枚举实例属性,并不枚举原型对象的属性,而且 constructor 属性也是不可枚举的

17420
领券