首页 > 解决方案 > 这两个 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 })

我无法弄清楚这两种语法之间的实际区别是什么,以及为什么第二种语法会返回一个空数组。

标签: javascript

解决方案


如果使用花括号,则必须指定 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);


推荐阅读