Javascript 如何在reactJs中删除对象数组中的重复项?
我在用Reactjs单击按钮的同时按下对象。最初我有三种类型的对象,比如“本地”、“全局”和“主”。我在onclock回调中将这些名称作为参数传递。如何避免使用reactJs插入重复项 我的渲染代码Javascript 如何在reactJs中删除对象数组中的重复项?,javascript,jquery,html,reactjs,Javascript,Jquery,Html,Reactjs,我在用Reactjs单击按钮的同时按下对象。最初我有三种类型的对象,比如“本地”、“全局”和“主”。我在onclock回调中将这些名称作为参数传递。如何避免使用reactJs插入重复项 我的渲染代码 <div> <input type="checkbox" onClick={this.checkedIn.bind(this, "LOCAL", "12")} /> <button type="checkbox" onClick={this.checkedI
<div>
<input type="checkbox" onClick={this.checkedIn.bind(this, "LOCAL", "12")} />
<button type="checkbox" onClick={this.checkedIn.bind(this, "GLOBAL", "15")} />
<button type="checkbox" onClick={this.checkedIn.bind(this, "MAIN", "11")} />
<button type="checkbox" onClick={this.checkedIn.bind(this, "MAIN", "13")} />
</div>
预期产量
[
{
"type":"LOCAL",
"value":[12]
},
{
"type":"GLOBAL",
"value":[15]
},
{
"type":"MAIN",
"value":[11, 13]
}
]
问题是您正在为每个单击事件推送值。相反,首先查找数组并使用
type
找到必要的对象,然后将值推送到该对象的值数组中
var o=objectVale.find(函数(x){
返回x.type==type;
})
如果(o){
o、 value=o.value | |[];
o、 value.push(value);
}否则{
推({
类型:类型,
值:[值]
})
}
问题是您正在为每个单击事件推送值。相反,首先查找数组并使用type
找到必要的对象,然后将值推送到该对象的值数组中
var o=objectVale.find(函数(x){
返回x.type==type;
})
如果(o){
o、 value=o.value | |[];
o、 value.push(value);
}否则{
推({
类型:类型,
值:[值]
})
}
您可以尝试以下方法:
var objectVale = [];
checkedIn(type, value) {
var index = objectValue.findIndex(function(obj){ return obj.type === type; });
if(index === -1){ // Object with the specific type not found.
objectValue.push({
type:type,
value:[value]
})
} else { // Object with the specific type found. So push only the value.
objectValue[index].value.push(value)
}
}
您可以尝试以下方法:
var objectVale = [];
checkedIn(type, value) {
var index = objectValue.findIndex(function(obj){ return obj.type === type; });
if(index === -1){ // Object with the specific type not found.
objectValue.push({
type:type,
value:[value]
})
} else { // Object with the specific type found. So push only the value.
objectValue[index].value.push(value)
}
}
我还建议使用
。查找。这样您就不必使用索引获取对象了。@Rajesh我认为这两种方法都是有效的。另外,如果我取消选中该复选框,则应删除未选中的复选框。我试过这样做,var mainValues=[];mainValues.push(值);var sameValueIndex=mainValues.indexOf(值);主值。拼接(sameValueIndex,1);但是它没有给出正确的结果,所以我建议使用.find
。这样您就不必使用索引获取对象了。@Rajesh我认为这两种方法都是有效的。另外,如果我取消选中该复选框,则应删除未选中的复选框。我试过这样做,var mainValues=[];mainValues.push(值);var sameValueIndex=mainValues.indexOf(值);主值。拼接(sameValueIndex,1);但它并没有给出正确的结果