吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 965|回复: 4
收起左侧

[求助] 关于JS数组some的一个写法

[复制链接]
liujieaipojie 发表于 2022-9-9 07:16
直入主题,some() 方法用于检测数组中的元素是否满足指定条件(函数提供)
语法是这样的:  array.some(function(currentValue,index,arr),thisValue)
我写了一个关于数组扁平化flat的demo如下:


[JavaScript] 纯文本查看 复制代码
<script>
        function flat(arr){
            const isDeep = arr.some(item =>item instanceof Array)
            console.log(isDeep)
            if(!isDeep){
                return arr
            }
            const res = Array.prototype.concat.apply([],arr)
            return flat(res)
        }

        const res = flat([1,2,3,[5,8,4,1,[10,21],[355,151,2],45,6],6])
        console.log(res)
    </script>

我上面这样写得出的结果是正常的,但是代码中我多加了一个花括号(红色字体),打印出的结果就不对了,像这样:
const isDeep = arr.some(item =>{item instanceof Array})


我找了好久原因才发现是这里加的括号导致的,这个就是一个函数的简写呀,为啥结果不一样。本人才学js不久,大佬如果看到见笑了,别嫌弃俺菜,希望得到大佬的解析,我也能取个经学习学习,我不怕嘲笑,只要大佬愿意教,我就学

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

yue_tai_mei 发表于 2022-9-9 07:28
这个是箭头函数,你加了这个花括号后,它把花括号里面的代码当成了是函数的执行体,里面代码执行了,但是没有返回值,返回就是undefined;如果你去掉了花括号,它就是一种简写,把item instanceof Array的值作为返回值。

如果你要加花括号,你需要这个样写:
arr.some(item =>{
return item instanceof Array
})
 楼主| liujieaipojie 发表于 2022-9-9 07:34
yue_tai_mei 发表于 2022-9-9 07:28
这个是箭头函数,你加了这个花括号后,它把花括号里面的代码当成了是函数的执行体,里面代码执行了,但是没 ...

妙蛙,简洁明了。明白了明白了,感谢感谢。  大佬早上好
Justin0110 发表于 2022-9-9 09:10
wjc 发表于 2022-9-9 12:01
有用的。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-14 05:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表