【发布时间】:2019-10-17 07:45:16
【问题描述】:
我已经编写了这个orderBy 条件来缩短对象数组,除非我尝试排序的值为空,否则它工作正常。下面你可以看到我的代码:
if (this.state.sortType === 'name asc'){
medias = _.orderBy(medias,[media => _.get(media,'metadata.title').toString().toLowerCase() ] , 'asc')
} else if (this.state.sortType === 'name desc'){
medias = _.orderBy(medias, [media => _.get(media,'metadata.title').toString().toLowerCase()], 'desc')
}
当media.metadata.title 是null 时,它会抛出该错误:
无法读取未定义的属性“toString”
有什么想法吗?
【问题讨论】:
-
你的输入数据是什么?似乎有些元素没有
metadata: { title: "" }属性 -
从 JavaScript 1.8.5 开始,在 null 上调用的 toString() 返回 [object Null],而 undefined 返回 [object Undefined],如第 5 版 ECMAScript 和后续勘误表中所定义。参考:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
@SibasishMohanty 这是我从未见过的行为,目前也不起作用。这要么用词不正确,要么完全错误。
标签: javascript arrays sorting lodash