JavaScript-如何使用其他条件过滤重复行
我想筛选条件为1的重复行 例如: 1) 我有不同状态的重复IDJavaScript-如何使用其他条件过滤重复行,javascript,arrays,ecmascript-6,filter,Javascript,Arrays,Ecmascript 6,Filter,我想筛选条件为1的重复行 例如: 1) 我有不同状态的重复ID 2) 如果状态为“已完成”,我想筛选重复的ID var data = [ {ID : 1, Status : 'Completed'}, {ID : 1, Status : 'Fail'}, {ID : 2, Status : 'Fail'}, {ID : 2, Status : 'Completed'}, {ID : 3, Status : 'Fail
2) 如果状态为“已完成”,我想筛选重复的ID
var data = [
{ID : 1,
Status : 'Completed'},
{ID : 1,
Status : 'Fail'},
{ID : 2,
Status : 'Fail'},
{ID : 2,
Status : 'Completed'},
{ID : 3,
Status : 'Fail'},
{ID : 4,
Status : 'Completed'},
{ID : 5,
Status : 'Completed'},
]
我想要的结果是:
var filter_data = [
{ID : 1,
Status : 'Fail'},
{ID : 2,
Status : 'Fail'},
{ID : 3,
Status : 'Fail'},
{ID : 4,
Status : 'Completed'},
{ID : 5,
Status : 'Completed'},
]
我想试试.filter()。有人有我可以参考的参考资料或示例来解决我发布的问题吗
===========================================================================
我还有一个复杂的问题需要解决(2019年7月19日更新)
基本上,我们需要检查两个条件,即ID和代码ID 例如1, ID和代码ID相同,并且状态为Not Reservable或Reservable,我们将删除状态为Reservable的ID和代码ID 例如2, ID和代码ID相同,并且状态为“已完成”或“可保留”,我们将删除状态为“已完成”的ID和代码ID 例如3, 如果两个ID相同,而代码ID不同,我们将在列表中同时显示这两个ID 所以我想要的结果是什么
var filter_new_data = [
{ID : 150042379,
Name : Cake 1234
Status : 'Not Reservable'
Code ID : 302},
{ID : 150042379,
Name : Bread 1236 Ticket
Status : 'Reservable'
Code ID : 391},
{ID : 150053213,
Name : Bread Basic 8
Status : 'Reservable'
Code ID : 201},
{ID : 150053213,
Name : Bread Basic 6
Status : 'Reservable'
Code ID : 301},
{ID : 150054121,
Name : Bread Basic 16
Status : 'Not Reservable'
Code ID : 202},
{ID : 150057599,
Name : Bread Riche
Status : 'Reservable'
Code ID : 232},
]
为了获得预期的结果,请使用下面的选项,即使用reduce和Object.values只循环一次,并避免多个循环进行比较
var数据=[
{ID:1,
状态:“已完成”},
{ID:1,
状态:'失败'},
{ID:2,
状态:'失败'},
{ID:2,
状态:“已完成”},
{ID:3,
状态:'失败'},
{ID:4,
状态:“已完成”},
{ID:5,
状态:“已完成”},
]
var filter_data=Object.values(data.reduce)(acc,v)=>{
如果(根据[v.ID]){
acc[v.ID]=acc[v.ID]。状态===“失败”?acc[v.ID]:v;
}否则{
acc[v.ID]=v
}
返回acc
},{}))
console.log(过滤数据)
Hi@Naga Sai,我刚刚更新了问题,问题更复杂了。当你有空的时候,你能看一看吗?@weikian,当最初的问题被回答时,我想这应该是一个新的问题,有了这个复杂的场景
var filter_new_data = [
{ID : 150042379,
Name : Cake 1234
Status : 'Not Reservable'
Code ID : 302},
{ID : 150042379,
Name : Bread 1236 Ticket
Status : 'Reservable'
Code ID : 391},
{ID : 150053213,
Name : Bread Basic 8
Status : 'Reservable'
Code ID : 201},
{ID : 150053213,
Name : Bread Basic 6
Status : 'Reservable'
Code ID : 301},
{ID : 150054121,
Name : Bread Basic 16
Status : 'Not Reservable'
Code ID : 202},
{ID : 150057599,
Name : Bread Riche
Status : 'Reservable'
Code ID : 232},
]