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_Reactjs - Fatal编程技术网

Javascript 尝试筛选和映射以输出唯一值

Javascript 尝试筛选和映射以输出唯一值,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,下面的代码是否可能,如果操作正确,它目前对我不起作用,我也可能走错了方向?尝试筛选然后映射,以避免重复的“子名称” App.js render() { const results = !this.state.resultFound ? null : this.state.search.filter((item, index) => this.state.search.indexOf(item) === index).map(item => (

下面的代码是否可能,如果操作正确,它目前对我不起作用,我也可能走错了方向?尝试筛选然后映射,以避免重复的“子名称”

App.js

render() {
  const results = !this.state.resultFound
    ? null
    : this.state.search.filter((item, index) =>
        this.state.search.indexOf(item) === index).map(item => (
          <Search
            key={item.key}
            subname={item.subname}
            clickedSub={() => this.getUniqueSubs2(item)}
          />
        ))
      )

  return (
    <div>
      {results}
    </div>
  )
}
render(){
const results=!this.state.resultFound
无效的
:this.state.search.filter((项目,索引)=>
this.state.search.indexOf(item)==index.map(item=>(
this.getUniqueSubs2(项)}
/>
))
)
返回(
{results}
)
}
Search.js

const search = (props) => {
  return (
    <button onClick={props.clickedSub}> {props.subname} </button>
  )
}
const search=(道具)=>{
返回(
{props.subname}
)
}

indexOf
方法将无法正常工作,因为您不是在基本值上操作,而是在对象上操作。在这种情况下,严格比较将失败

您可以尝试例如
Array#reduce
来消除重复

const arr=[{subname:'foo',name:'a'},{subname:'boo',name:'b'},{subname:'foo',name:'c'}];
常数r=对象值(
arr.reduce((s,a)=>(s中的a.subname?a:s[a.subname]=a,s),{}),
);

控制台日志(r)
indexOf
的回音不处理对象,而是使用filter、indexOf和map的示例

let search=[{
重点:1,,
子名称:“a”
}, {
重点:二,,
子名称:“a”
}, {
重点:三,,
子名称:“b”
}, {
重点:四,,
子名称:“b”
}]
让我们看看=[];
让结果=search.filter((项目,索引)=>{
if(见.indexOf(item.subname)=-1){
seen.push(item.subname)
返回错误
}
返回真值
})
.map(o=>({
newValue:'abc',
……哦
}))
document.querySelector(“#test”).innerHTML=JSON.stringify(result)

你能解释一下“=a,s”的用途吗?迷路了there@Prav是的,当然-
,s)
只是一个逗号表达式-如果你只写
返回s,它的工作原理是一样的