Javascript 尝试筛选和映射以输出唯一值
下面的代码是否可能,如果操作正确,它目前对我不起作用,我也可能走错了方向?尝试筛选然后映射,以避免重复的“子名称” App.jsJavascript 尝试筛选和映射以输出唯一值,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 => (
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,它的工作原理是一样的代码>