Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.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 在React Native Picker中仅呈现唯一标签_Javascript_Reactjs_React Native_Ecmascript 6 - Fatal编程技术网

Javascript 在React Native Picker中仅呈现唯一标签

Javascript 在React Native Picker中仅呈现唯一标签,javascript,reactjs,react-native,ecmascript-6,Javascript,Reactjs,React Native,Ecmascript 6,我有一个JSON,也可以通过 我只想呈现唯一的客户,这是我迄今为止的代码。它显示所有客户。responseData包含对象的“response”数组 <Picker mode="dialog" selectedValue={this.state.customerName} onValueChange={(itemValue, itemIndex) => { this.setState({ customerName: itemValue }); } }

我有一个JSON,也可以通过

我只想呈现唯一的客户,这是我迄今为止的代码。它显示所有客户。
responseData
包含对象的“response”数组

<Picker
  mode="dialog"
  selectedValue={this.state.customerName}
  onValueChange={(itemValue, itemIndex) => {
    this.setState({ customerName: itemValue });
    }
  }
  >
    {
      this.state.responseData.map((item) => (
      <Picker.Item label={item.customer} value={item.customer} key={item.customer} />))
    }
</Picker>
{
this.setState({customerName:itemValue});
}
}
>
{
this.state.responseData.map((项)=>(
))
}

您需要减少数组以过滤出唯一值,为此您可以使用reduce方法

const数据={
“答复”:[
{
“id”:“1”,
“客户”:“星球大战”,
“项目”:“1977年”
},
{
“id”:“2”,
“客户”:“星球大战”,
“项目”:“1985年”
},
{
“id”:“3”,
“客户”:“矩阵”,
“项目”:“1999年”
},
{
“id”:“4”,
“客户”:“初始阶段”,
“项目”:“2010年”
},
{
“id”:“5”,
“客户”:“星际”,
“项目”:“2014年”
}
]
}
const arr=数据.响应.减少((附件,项目)=>{
如果(!附件包括(项目客户)){
acc.push(项目客户);
}
返回acc;
}, [])

控制台日志(arr)
您可以使用
过滤器
检查某个
客户
第一次出现的电影是否与循环的当前
索引
具有相同的
索引。这样你只会得到所有独一无二的

const电影=[
{
id:“1”,
顾客:“星球大战”,
项目:“1977年”
},
{
id:“2”,
顾客:“星球大战”,
项目:“1985年”
},
{
id:“3”,
顾客:“矩阵”,
项目:“1999年”
},
{
id:“4”,
顾客:“开始”,
项目:“2010年”
},
{
id:“5”,
顾客:“星际”,
项目:“2014年”
}
];
const uniqueMovies=movies.filter((电影,索引)=>{
return movies.findIndex(m=>m.customer==movie.customer==index;
});

console.log(uniqueMovies)
您可以使用以下函数,如
uniqueArray=removeDuplicates(响应“customer”)


在呈现+1侧边之前,请尝试过滤掉值。注意:使用
对象
集合(如果可用),因为累加器效率更高,因此您不必每次都迭代累加器来检查重复项。@Shubham Khatri:您还可以添加使用集合的代码段吗。非常感谢。
<Picker
  mode="dialog"
  selectedValue={this.state.customerName}
  onValueChange={(itemValue, itemIndex) => {
    this.setState({ customerName: itemValue });
    }
  }
  >
    {
      this.state.responseData.map((item) => (
      <Picker.Item label={item.customer} value={item.customer} key={item.customer} />))
    }
</Picker>
function removeDuplicates(myArr, prop) {
    return myArr.filter((obj, pos, arr) => {
        return arr.map(mapObj => mapObj[prop]).indexOf(obj[prop]) === pos;
    });
}