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

Javascript 如何停止循环中的重复值?

Javascript 如何停止循环中的重复值?,javascript,arrays,loops,Javascript,Arrays,Loops,我正在使用此代码读取每个对象中键为“category”的所有值: const list chapter=datas.map((数据)=>console.log(数据.category)) 数据是一个对象数组,共有45个对象 问题是,当我使用console.log时,我有许多重复的值,您可以看到以下内容: 我希望每个类别都有一个唯一的值。我该怎么做 在遍历数据之前,从数据中筛选重复项 var unique = datas.reduce(function(unique, data) { ret

我正在使用此代码读取每个对象中键为“category”的所有值:

const list chapter=datas.map((数据)=>console.log(数据.category))

数据是一个对象数组,共有45个对象

问题是,当我使用console.log时,我有许多重复的值,您可以看到以下内容:


我希望每个类别都有一个唯一的值。我该怎么做

在遍历数据之前,从数据中筛选重复项

var unique = datas.reduce(function(unique, data) {
  return unique.indexOf(data.category) === -1 ? unique.concat(data.category) : unique;
}, []);

这种方法更快,因为迭代次数更少:

const listChapter = Object.keys(datas.reduce((ac, el) => {
    ac[el.category] = true
    return ac
}, {}))

arr是整个数组

for(var i = 0; i < data.length; i++) {
            if(arr[i] == data.category) {
              remove item here;
            }
          }
for(变量i=0;i
您还可以使用该套件完成以下操作:

let data = ['Alfa', 'Alfa', 'Beta', 'Gamma', 'Beta', 'Omega', 'Psi', 'Beta', 'Omega'];

let arr = [... new Set(data)];
// Or   = Array.from(new Set(data));

console.log(arr);
编辑:我忘了你有一个对象数组。在这种情况下:

let data2 = [
  {'category': 'Alfa'},
  {'category': 'Alfa'},
  {'category': 'Beta'}
]    

let set = new Set();
data2.forEach((data) => {
  set.add(data.category);
});

let arr2 = [... set];

console.log(arr2);

这里有一个使用
filter()
的替代单行程序(只是为了好玩):


这是答案的微小改进。(我还不能发表评论。)


数组中是否有大量重复值?如果是这样的话,您可能想先过滤掉重复的内容……如果您想要一个字符串数组,那么
listChapter
的格式应该是什么?您可以
映射
数据,将每个类别放入一个数组,然后
过滤该数组并删除任何重复的值。lodash或下划线具有生成唯一元素(q.uniq)的函数。它完成了这项工作。谢谢
console.log(datas.filter((data, i, a) =>
        i === a.findIndex(data2 => data.category === data2.category)));
const arr = [
  {'category': 'Alfa'},
  {'category': 'Alfa'},
  {'category': 'Beta'}
]; 

const unique = [...new Set(arr.map(item => item.category))];