Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.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_Duplicates_Find - Fatal编程技术网

Javascript 如何在这样的嵌套数据中查找重复值

Javascript 如何在这样的嵌套数据中查找重复值,javascript,arrays,duplicates,find,Javascript,Arrays,Duplicates,Find,我需要一个函数来查找这种嵌套数据中的重复颜色 [‘黑’、‘白’、‘红’、‘黑’、[‘黑’、‘紫’、‘蓝’、[‘紫’、‘黄’、‘绿’、‘灰’、‘紫’]] 预期结果: (2) ["Purple", "Yellow"] 尝试: var color=['Blue', 'Red', 'Purple', 'Grey', 'Purple', 'Yellow', 'Yellow'] var uniq = color .map((name) => { return {count: 1, name:

我需要一个函数来查找这种嵌套数据中的重复颜色

[‘黑’、‘白’、‘红’、‘黑’、[‘黑’、‘紫’、‘蓝’、[‘紫’、‘黄’、‘绿’、‘灰’、‘紫’]]

预期结果:

(2) ["Purple", "Yellow"]
尝试:

var color=['Blue', 'Red', 'Purple', 'Grey', 'Purple', 'Yellow', 'Yellow']

var uniq = color
.map((name) => {
  return {count: 1, name: name}
})
.reduce((a, b) => {
  a[b.name] = (a[b.name] || 0) + b.count
  return a
}, {})

var duplicates = Object.keys(uniq).filter((a) => uniq[a] > 1)

console.log(duplicates)
如果该项未出现在数组中的另一个索引中,则可以与一起使用,并仅将其添加到累积索引中

常量颜色=[“黑色”、“白色”、“红色”、“黑色”、“黑色”、“紫色”、“蓝色”、“紫色”、“黄色”、“绿色”、“灰色”、“紫色”], […重复]=颜色 .公寓2 .reduceAC、col、i、src=> src.lastIndexOfcol!==我 ? acc.addcol:acc, 新设置;
console.logreplices 我首先将数组投影到一个特定项出现的映射中,然后您可以查看该列表以确定重复项及其出现的次数(如果需要)

var arr = ['black', 'white', 'red', 'black', ['black', 'purple', 'blue', ['purple', 'yellow', 'green', 'gray'], 'purple']];

var occurrences = arr.flat(2).reduce(function(prev, cur) {
  prev[cur] = (prev[cur] || 0) + 1;
  return prev;
}, {});

var duplicates = Object.keys(occurrences).filter(key => occurrences[key] > 1);

程序将检查该值是否为数组,如果它是数组,我们将执行递归来处理内部数组,否则将向其添加值


请添加想要的结果和您尝试过的内容。
var colors = ['black', 'white', 'red', 'black', ['black', 'purple', 'blue', ['purple', 'yellow', 'green', 'gray'], 'purple']];

function uniqueFunc(arr) {
    return arr.reduce(function (colorSet, value) {
        if (Array.isArray(value)) { uniqueFunc(value, colorSet); } else { colorSet.add(value) }
        return colorSet;
    }, arguments[1] ? arguments[1] : new Set());
}

console.log(Array.from(uniqueFunc(colors)));