如何使用Javascript根据条件更新键值

我有一些对象值数组,我需要检查一些键值对并使用 Javascript 相应地更新对象。我在下面解释我的代码。\


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 found = arr.some(el => el.code === 1);

  if(found) {

    

  }

}) 

在这里,我有对象数组,如果任何记录都具有code=1,id那么我需要所有记录都code=1属于相同的id。我的预期输出将如下所示。


let arr =[

  {

    'id': 11,

    'name':'Raj',

    "code":1

  },

  {

    'id': 11,

    'name':'Raj',

    'code': 1

  },

  {

    'id':32,

    'name':'Krishna',

    'code':1

  },

  {

    'id':32,

    'name':'fff',

    'code':1

  },

  {

    'id':43,

    'name':'FAQ',

    'code':0

  }

]

这里对于 id=11 有一条记录的 code=1 所以所有记录都属于 id=11 的 code 值为 1;


白衣非少年
浏览 186回答 5
5回答

翻过高山走不出你

既然您已接受它作为答案。你的问题是错误的。我的解决方案只是检查 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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript