gpt4 book ai didi

javascript - JS新设置,删除重复不区分大小写?

转载 作者:行者123 更新时间:2023-12-03 04:34:41 25 4
gpt4 key购买 nike

var arr = ['verdana', 'Verdana', 2, 4, 2, 8, 7, 3, 6];
result = Array.from(new Set(arr));

console.log(arr);
console.log(result);

我想删除任何不区分大小写的重复项所以预期的结果应该是

['Verdana', 2, 4, 8, 7, 3, 6]

但似乎不起作用...

最佳答案

JavaScript 比较器区分大小写。对于字符串,您可能需要首先清理数据:

var arr = ['verdana', 'Verdana', 2, 4, 2, 8, 7, 3, 6]
.map(x => typeof x === 'string' ? x.toLowerCase() : x);
result = Array.from(new Set(arr));
// produces ["verdana", 2, 4, 8, 7, 3, 6];
<小时/>

或者,您可以将 reduce() 与自定义嵌套比较逻辑结合使用。下面的实现比较忽略大小写的项目,但对于“相等”字符串,它会选择第一个出现的位置,而不管其“大小写”是什么:

'verdana', 'Moma', 'MOMA', 'Verdana', 2, 4, 2, 8, 7, 3, 6]
.reduce((result, element) => {
var normalize = x => typeof x === 'string' ? x.toLowerCase() : x;

var normalizedElement = normalize(element);
if (result.every(otherElement => normalize(otherElement) !== normalizedElement))
result.push(element);

return result;
}, []);
// Produces ["verdana", "Moma", 2, 4, 8, 7, 3, 6]

关于javascript - JS新设置,删除重复不区分大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46741019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com