为了账号安全,请及时绑定邮箱和手机立即绑定

如何避免 castArray 函数?

如何避免 castArray 函数?

青春有我 2021-08-20 15:42:50
Lodash castArray函数没有什么特别之处。有没有什么方法可以在没有任何外部库的情况下使用最新的语言功能来解决这个任务,但仍然很快?如果您不熟悉该任务:castArray(['abc', 'def'])// ['abc', 'def']castArray('abc')// ['abc']castArray()// []castArray(undefined)// [undefined]有没有办法在没有类型检查的情况下做到这一点?请注意,我寻找最短的等效项 ES6+。
查看完整描述

2 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

Lodash castArray函数没有什么特别之处。有没有什么方法可以在没有任何外部库的情况下使用最新的语言功能来解决这个任务,但仍然很快?


如果您不熟悉该任务:


castArray(['abc', 'def'])

// ['abc', 'def']

castArray('abc')

// ['abc']

castArray()

// []

castArray(undefined)

// [undefined]

有没有办法在没有类型检查的情况下做到这一点?请注意,我寻找最短的等效项 ES6+。


查看完整回答
反对 回复 2021-08-20
?
绝地无双

TA贡献1946条经验 获得超4个赞

上面的答案没有考虑 NodeLists 和其他类似 Array 的(Iterrable)对象。


对 castArray 的更准确答案是


function isIterable(value) {

       return Symbol.iterator in Object(value)

}


function getElementsAsArray(obj) {

    if (!obj) {

        return []

    }


    if (isIterable(obj) && typeof obj !== 'string') {

        return Array.from(obj)

    }


    return [obj]

}


查看完整回答
反对 回复 2021-08-20
  • 2 回答
  • 0 关注
  • 155 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信