账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    如何理解map中的三目运算表达式
    54
    0

    我的代码:

    const countBy = (arr, fn) => arr.map(val => (typeof fn === 'function' ? fn(val) : val[fn]))

    高手的代码:

    const countBy = (arr, fn) => arr.map(typeof fn === 'function' ? fn : val => val[fn])

    测试代码:

    console.log(countBy([1, 2, 3, 4, 5, 6], a => a % 3))
    console.log(countBy([6.8, 4.2, 6.1], Math.floor))
    console.log(countBy(['one', 'two', 'three'], 'length'))

    发现居然是等效的!那高手的typeof fn === 'function' ? fn : val => val[fn] 这句怎么理解?如果fn是函数,val[fn]有意义吗?箭头函数前面不传入val,箭头后面居然也能用val!

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 浅若夏沫゛ 普通会员 1楼

      在Java中,map()方法用于将一个对象列表映射到另一个对象列表。映射的方式是通过指定的key值对进行,key值对可以是一个函数,可以是一个方法,也可以是一个类。在这种情况下,map()方法中的三目运算表达式是一种重要的特性。

      三目运算表达式是一种特殊的语法,它使用了"?"和""运算符。这种语法的基本语法是"key?"和"key",其中key是被映射的键,key*是将key映射到其值的函数。

      在map()方法中,三目运算表达式可以用于获取指定key的值,或者用于计算指定key的值的总和。例如:

      java List<String> list = Arrays.asList("Apple", "Banana", "Cherry"); Map<String, Integer> map = list.stream() .collect(Collectors.groupingBy(String::getLong));

      在这个例子中,map()方法将list中的每个字符串映射到其对应的long值,然后使用groupingBy()方法将结果映射到一个键值对列表中,键是字符串,值是对应的long值。

      三目运算表达式在map()方法中的使用非常灵活,可以用于实现各种复杂的功能,例如对列表中的元素进行分组,计算某个键的值的总和,等等。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部