javascript - 这两个 JavaScript 表达式有什么区别?
问题描述
我正在使用 JavaScript 的过滤器方法来删除重复的条目,并且我正在使用以下语法:
var dataArray = ['g','o','o','g','l','e']
dataArray.filter((value, index) => dataArray.indexOf(value) === index)
上面的代码工作正常,并通过删除重复值返回一个数组。但是,当我在箭头函数之后添加一个{花括号时,它会返回一个空数组。
var dataArray = ['g','o','o','g','l','e']
dataArray.filter((value, index) => { dataArray.indexOf(value) === index })
我无法弄清楚这两种语法之间的实际区别是什么,以及为什么第二种语法会返回一个空数组。
解决方案
如果使用花括号,则必须指定 return 关键字:
var dataArray = ['g','o','o','g','l','e']
dataArray = dataArray.filter((value, index) => { return dataArray.indexOf(value) === index });
console.log(dataArray);
不过,我更喜欢使用Set从数组中删除重复项:
var dataArray = ['g','o','o','g','l','e']
dataArray = [...new Set(dataArray)];
console.log(dataArray);
推荐阅读
- css - PrimeVue 菜单栏
- javascript - 发送 Base 64 字符串作为请求参数
- jquery - 如何使用 jQuery 连接按钮单击功能以移动幻灯片?
- azure - Azure ServiceBus 可以提前多长时间安排消息
- mysql - 如何比较列值以查看该值是否相同,除了该值的结尾
- javascript - 如何将日期(在一段时间内随机生成)格式化为 DD/MM/YYYY
- c++ - 访问 MultiDim 数组会给出 Seg Fault C++
- android - Android 布局组织
- mysql - Group by with 子句 a key 不相等
- python - Python中的平滑曲面图