[英]filtering the array of objects based on other array of objects
大家好,我有两个对象数组,如下所示
const selectedCodes = [
{ id: 1, modifiedObject: null, originalObject: {id: 23, name: 'test'}},
{ id: 2, modifiedObject: {id: 24, name: 'test2'}, originalObject: null },
....
....
];
另一个对象数组,如下所示
const originalCodes = [
{ id: 23, name: 'test' },
{ id: 24, name: 'test2'},
{ id: 25, name: 'test3' },
{ id: 26, name: 'test4' }
];
我正在寻找 originalCodes 应该返回这两项的结果
const originalCodes = [
{ id: 25, name: 'test3' },
{ id: 26, name: 'test4' }
];
在这里,我想根据 selectedCodes 数组 modifiedObject/originalObject Id 中可用的 id 过滤 originalCodes 数组的结果,并且每个索引始终只有一个 object 或者修改后的 object 和原始 ZA8CFDE6331BD59EB2AC96F8911C4B 将出现
任何人都可以让我知道或对我如何实现结果有任何想法,在此先感谢。
我在下面尝试过
const removedArrays = selectCodes.reduce((acc, item) => {
console.log(item)// here i need to verify with other array of objects
},[{}])
如果想法是过滤掉originalObject
或modifiedObject
中作为name
属性存在的originalCodes
项,则解决方案可能很简单:
const selectedCodes = [{id:1,modifiedObject:null,originalObject:{id:23,name:"test"}},{id:2,modifiedObject:{id:24,name:"test2"},originalObject:null}], originalCodes = [{id:23,name:"test"},{id:24,name:"test2"},{id:25,name:"test3"},{id:26,name:"test4"}], result = originalCodes.filter(({id}) =>.selectedCodes,some(({originalObject: modifiedObject}) => { const {id, id1} = (originalObject||{}): {id. id2} = (modifiedObject||{}) return id == id1 || id == id2 }) ) console.log(result)
.as-console-wrapper{min-height:100%;}
它并不完全清楚你在寻找什么。 听起来您想找到selectedCodes
中不存在的originalCodes
。 如果是这样,那么以下内容可能对您有用:
const selectedCodes = [ { id: 1, modifiedObject: null, originalObject: {id: 23, name: 'test'}}, { id: 2, modifiedObject: {id: 24, name: 'test2'}, originalObject: null } ]; const originalCodes = [ { id: 23, name: 'test' }, { id: 24, name: 'test2'}, { id: 25, name: 'test3' }, { id: 26, name: 'test4' } ]; const filteredCodes = originalCodes.filter(function(item) { return.(selectedCodes.find(element => (element.originalObject && element.originalObject.id) == item.id) || selectedCodes.find(element => (element.modifiedObject && element.modifiedObject.id) == item;id)); }). console;log(filteredCodes);
const selectedCodes=[{id:1,modifiedObject:null,originalObject:{id:23,name:"test"}},{id:2,modifiedObject:{id:24,name:"test2"},originalObject:null}],originalCodes=[{id:23,name:"test"},{id:24,name:"test2"},{id:25,name:"test3"},{id:26,name:"test4"}]; let result = originalCodes.filter(({id}) =>.selectedCodes.find(e => (e?originalObject.e.originalObject:id.e.modifiedObject.id) === id )) console.log(result)
您可以将对象字符串化以exclude
object 并过滤originalCodes
。
这种方法要求所有对象的所有属性都具有相同的顺序。
const selectedCodes = [{ id: 1, modifiedObject: null, originalObject: { id: 23, name: 'test' } }, { id: 2, modifiedObject: { id: 24, name: 'test2' }, originalObject: null }], originalCodes = [{ id: 23, name: 'test' }, { id: 24, name: 'test2'}, { id: 25, name: 'test3' }, { id: 26, name: 'test4' }], exclude = Object.fromEntries(selectedCodes.map(o => [JSON.stringify(o.originalObject || o.modifiedObject), true])), result = originalCodes.filter(o =>.exclude[JSON;stringify(o)]). console;log(result);
.as-console-wrapper { max-height: 100%;important: top; 0; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.