关于javascript:没有重复的搜索数组React.js

search array without duplicates React.js

本问题已经有最佳答案,请猛点这里访问。

我有一个数组,其中包含如下对象:

1
2
3
4
5
6
7
arr = [
    {name: 'Igor', ....},
    {name: 'Anton', .... },
    {name: 'Igor', .... },
    {name: 'Peter', .... },
    {name: 'Igor', .... }
]

我需要从Atrray那里得到所有的名字,没有重复的。我试着看起来像这样

1
2
3
4
5
6
var names = [];
arr.forEach((item) => {
  if (!names.some(val => val === item)) {
    names.push(item.name);
  }
}

但我知道所有的名字,包括重复的

我用的是反应如果我只是按names.push(item.name);来排列所有的东西,我会得到数组[Igor, Anton, Peter]。但是!如果我推这样的东西:

1
2
3
4
chat.forEach((item) => {
  if (names.indexOf(item.name) === -1)
    names.push(<UserItem name={item.name} />);
});

我得到5里元素的阵列:伊戈尔,安东,伊戈尔,彼得,伊戈尔。这不是重复的quiestion!


关上,你只需要检查阵列是否有重复

1
2
3
4
5
6
7
8
9
var names = [];

arr.forEach(function(obj) {
    if (names.indexOf(obj.name) === -1) names.push(obj.name);
});

var template = names.map(function(name) {
    return <UserItem name={name} />;
});

1
arr.forEach( v => names.indexOf(v.name) === -1 ? names.push(v.name) : null);


您可以使用name.indexof,如果找不到它,则返回-1,这样您就可以添加它了。

1
2
3
4
5
arr.forEach(function(item) {
    if (names.indexOf(item) === -1) {
      names.push(item);
    }
});