没有重复的搜索数组React.js

时间:2015-12-17 16:33:07

标签: javascript arrays search reactjs duplicates

我有一个像这样的对象的数组:

arr = [
    {name: 'Igor', ....},
    {name: 'Anton', .... },
    {name: 'Igor', .... },
    {name: 'Peter', .... },
    {name: 'Igor', .... }
]

我需要从atrray获取所有名称,没有重复。我试过看起来像这样

var names = [];
arr.forEach((item) => {
  if (!names.some(val => val === item)) {
    names.push(item.name);
  }
}

但是我得到了包括重复的所有名字

upd:我正在使用React 如果我只是推送names.push(item.name);数组一切正常,我会得到数组[Igor, Anton, Peter]。但!如果我推这样的项目:

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

我得到了5个元素的数组:伊戈尔,安东,伊戈尔,彼得,伊戈尔。 这不是重复的静止!

2 个答案:

答案 0 :(得分:3)

关闭,你只需要检查数组是否为dupes

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} />;
});

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

答案 1 :(得分:1)

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

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