5 回答
TA贡献1875条经验 获得超3个赞
既然您已接受它作为答案。你的问题是错误的。我的解决方案只是检查 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);
TA贡献1856条经验 获得超17个赞
我认为您想要的是首先再次在列表中进行过滤,以查找是否有任何具有相同 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);
TA贡献1842条经验 获得超21个赞
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)
TA贡献1845条经验 获得超8个赞
我会根据他们的 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);
TA贡献1811条经验 获得超5个赞
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);
添加回答
举报