-
翻过高山走不出你
既然您已接受它作为答案。你的问题是错误的。我的解决方案只是检查 id 是否具有code除此之外的一些值,0它将适用于 that 的所有对象id。var arr =[ { 'id': 11, 'name':'Raj', "code":0 }, { 'id': 11, 'name':'Raj', 'code': 1 }, { 'id':32, 'name':'Krishna', 'code':1 }, { 'id':32, 'name':'fff', 'code':0 }, { 'id':43, 'name':'FAQ', 'code':0 }];var result = arr.map((k,i,self)=>({...k, code:self.find(p=>p.id==k.id && p.code != 0)?.code || k.code}));console.log(result);
-
慕慕森
我认为您想要的是首先再次在列表中进行过滤,以查找是否有任何具有相同 id 且代码 === 1 的项目。这可以通过多种方式完成。下面是一个例子let arr = [{ 'id': 11, 'name': 'Raj', "code": 0 }, { 'id': 11, 'name': 'Raj', 'code': 1 }, { 'id': 32, 'name': 'Krishna', 'code': 1 }, { 'id': 32, 'name': 'fff', 'code': 0 }, { 'id': 43, 'name': 'FAQ', 'code': 0 }]let arr1 = arr.map((item, i) => { const currentId = item.id; const itemsWithSameId = arr.filter(el => el.id === currentId); const found = itemsWithSameId.some(el => el.code === 1); if (found) { return { ...item, code: 1}; } return item;})console.log(arr1);
-
茅侃侃
const arr = [{ id: 11, name: 'Raj', code: 0}, { id: 11, name: 'Raj', code: 1}, { id: 32, name: 'Krishna', code: 1}, { id: 32, name: 'fff', code: 0}, { id: 43, name: 'FAQ', code: 0}]const update = (id, code) => { const updatedArr = arr.map(el => { if (el.id === id) el.code = code return el }) return updatedArr}const result = update(11, 1)console.log(result)
-
精慕HU
我会根据他们的 id 对项目进行分组。然后过滤掉至少一个项目的代码为 1 的所有组。然后将这些组中所有项目的代码设置为 1。function groupBy(iterable, fn) { const groups = new Map(); for (const item of iterable) { const key = fn(item); if (!groups.has(key)) groups.set(key, []); groups.get(key).push(item); } return groups;}let arr =[ { id: 11, name: 'Raj', code: 0 }, { id: 11, name: 'Raj', code: 1 }, { id: 32, name: 'Krishna', code: 1 }, { id: 32, name: 'fff', code: 0 }, { id: 43, name: 'FAQ', code: 0 }];Array.from(groupBy(arr, item => item.id).values()) .filter(group => group.some(item => item.code == 1)) .flat(1) .forEach(item => item.code = 1);console.log(arr);
-
四季花海
let arr = [{ 'id': 11, 'name': 'Raj', "code": 0 }, { 'id': 11, 'name': 'Raj', 'code': 1 }, { 'id': 32, 'name': 'Krishna', 'code': 1 }, { 'id': 32, 'name': 'fff', 'code': 0 }, { 'id': 43, 'name': 'FAQ', 'code': 0 }]const foundItems = arr.filter(el => el.code === 1);arr.forEach(el => { if (foundItems.find(e => e.id === el.id)) { el.code = 1; }});console.log(arr);