我正在尝试使用new Set来移除数组中的重复项,但是出现了错误“new Set(names).slice is not a function”
const names = ["Mike","Matt","Nancy","Adam","Jenny","Nancy","Carl"];
const uniq = [ ...new Set(names) ];
console.log(uniq);
这里是在stackblitz上的代码
。我正在尝试使用new Set来移除数组中的重复项,但是出现了错误“new Set(names).slice is not a function”
const names = ["Mike","Matt","Nancy","Adam","Jenny","Nancy","Carl"];
const uniq = [ ...new Set(names) ];
console.log(uniq);
这里是在stackblitz上的代码
。我通过在项目根目录添加一个tsconfig.json
成功解决了错误。这是一个非常简单的配置:
{
"compilerOptions": {
"target": "es6"
}
}
es3
版本,如果没有配置目标,则默认为此版本,具体请参见此处(请参阅--target
)。var uniq = new Set(names).slice();
就我个人而言,我认为这是TypeScript的一个bug,但我从未使用过TypeScript,所以不能确定。
编辑 - 实际上,我认为只有在目标为ES5时才会发生这种情况。
Array.from(new Set(names))
- 这样更易读 :-) - Bergi