Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查数组中是否有两个或多个相同的未知字符串?_Javascript_Arrays - Fatal编程技术网

Javascript 如何检查数组中是否有两个或多个相同的未知字符串?

Javascript 如何检查数组中是否有两个或多个相同的未知字符串?,javascript,arrays,Javascript,Arrays,如果数组中有两个或多个相同的值,我如何签入JavaScript 比如, ['one','two','three']->false,因为数组项不会出现一次以上 ['one','one','two']->true,因为'one'不止一次出现 ['one','one','one','two']->true,因为'one'不止一次出现 ['askja','askja','askja','iamms']->true,因为'askja'出现3次 提前谢谢 您可以遍历数组并将每个元素推送到一个集合中。如果存在

如果数组中有两个或多个相同的值,我如何签入JavaScript

比如,

['one','two','three']
->false,因为数组项不会出现一次以上

['one','one','two']
->true,因为'one'不止一次出现

['one','one','one','two']
->true,因为'one'不止一次出现

['askja','askja','askja','iamms']
->true,因为'askja'出现3次


提前谢谢

您可以遍历数组并将每个元素推送到一个集合中。如果存在任何冲突,则您知道其中包含相同的值。

您可以迭代数组并将每个元素推到一个集合中。如果存在任何冲突,则您知道其中包含相同的值。

一个简单的解决方案是定义一个
映射,该映射通过键存储项值的存在性(即
true
如果存在)

如果通过该映射检测到此类项存在,则可以推断输入数组中存在字符串的多个副本:

函数具有多个副本(arr){
/* 
一种临时映射,用于存储中存在的密钥的“true”
啊
*/
常量映射={};
用于(arr的施工项目){
如果(映射[项目]){
/* 
如果映射包含项的键/值,则当前项具有
在arr中至少出现两次
*/
返回true;
}
映射[项目]=真;
}
返回false;
}
log(有多个副本(['one','two','three']),“==false”)
log(有多个副本(['one','one','two']),“==true”)

log(有多个副本(['one','one','one','two']),“===true”)
一个简单的解决方案是定义一个
map
,它按键存储项值的存在(即
true
如果存在)

如果通过该映射检测到此类项存在,则可以推断输入数组中存在字符串的多个副本:

函数具有多个副本(arr){
/* 
一种临时映射,用于存储中存在的密钥的“true”
啊
*/
常量映射={};
用于(arr的施工项目){
如果(映射[项目]){
/* 
如果映射包含项的键/值,则当前项具有
在arr中至少出现两次
*/
返回true;
}
映射[项目]=真;
}
返回false;
}
log(有多个副本(['one','two','three']),“==false”)
log(有多个副本(['one','one','two']),“==true”)

log(有多个副本(['one','one','one','two']),“===true”)
有几种方法可以做到这一点:

1:使用Stevens Qiu建议的方法。如果数组和集合的长度不相等,则表示数组中存在重复。这是我最喜欢的

2:遍历数组。在每次迭代中,将该值添加到哈希中。如果该值已经在散列中,则存在重复,因此返回true

3:遍历数组。在每次迭代中,获取项目的索引(indexOf())和项目的最后一个索引(lastIndex())。如果这些值不相等,则返回true

const arr=['hi','bye','hi'];
常量arr2=['hi','bye','what'];
//设置大小console.log(arr2.length==新集合(arr2.size))有几种方法可以做到这一点:

1:使用Stevens Qiu建议的方法。如果数组和集合的长度不相等,则表示数组中存在重复。这是我最喜欢的

2:遍历数组。在每次迭代中,将该值添加到哈希中。如果该值已经在散列中,则存在重复,因此返回true

3:遍历数组。在每次迭代中,获取项目的索引(indexOf())和项目的最后一个索引(lastIndex())。如果这些值不相等,则返回true

const arr=['hi','bye','hi'];
常量arr2=['hi','bye','what'];
//设置大小console.log(arr2.length==新集合(arr2.size))您可以使用它来获取唯一值和重复项,并确定它们是否重复

const array = [];

const uniqueItems = [...new Set(array)]

const duplicates = array.reduce((acc, item) => {
    return uniqueItems.includes(item) ? acc : [...acc, item];
}, []);

const hasDuplicate = duplicates.length > 0;

您可以使用它来获取唯一值和重复项,并确定它们是否重复

const array = [];

const uniqueItems = [...new Set(array)]

const duplicates = array.reduce((acc, item) => {
    return uniqueItems.includes(item) ? acc : [...acc, item];
}, []);

const hasDuplicate = duplicates.length > 0;

可能重复的可能重复的感谢!这回答了我的问题,但我忘了问另外一件事。如何获得出现两次的实际字符串?要获得实际字符串,最好按照答案的方法2所述进行迭代。当您找到哈希中已经存在的键(Object.hasOwnProperty(key))时,返回字符串。谢谢!这回答了我的问题,但我忘了问另外一件事。如何获得出现两次的实际字符串?要获得实际字符串,最好按照答案的方法2所述进行迭代。当您找到哈希中已经存在的键(Object.hasOwnProperty(key))时,返回字符串。