JavaScript数组对象中重复ID如何处理并赋予不同值?

JavaScript数组对象中重复ID如何处理并赋予不同值?

巧妙解决JavaScript数组对象中重复id问题

本文提供一种高效的JavaScript方法,用于处理数组对象中重复的ID,并为具有相同ID的对象赋予不同的值。

假设我们有一个包含重复ID的数组对象:

const list = [   { id: 1, name: '小明' },   { id: 1, name: '小红' },   { id: 2, name: '小强' },   { id: 3, name: '小张' },   { id: 4, name: '小兰' },   { id: 1, name: '小青' },   { id: 4, name: '小青' } ];

我们的目标是为每个重复ID的对象添加一个value属性,并赋予其不同的布尔值(true或false)。最终结果应如下所示:

const list = [   { id: 1, name: '小明', value: true },   { id: 1, name: '小红', value: false },   { id: 2, name: '小强' },   { id: 3, name: '小张' },   { id: 4, name: '小兰', value: true },   { id: 1, name: '小青', value: true },   { id: 4, name: '小青', value: false } ];

为了实现这个目标,我们可以使用一个对象来跟踪ID的出现次数,并使用另一个对象记录每个ID已经赋予的值。

立即学习Java免费学习笔记(深入)”;

以下是实现代码:

const list = [   { id: 1, name: '小明' },   { id: 1, name: '小红' },   { id: 2, name: '小强' },   { id: 3, name: '小张' },   { id: 4, name: '小兰' },   { id: 1, name: '小青' },   { id: 4, name: '小青' } ];  const idCounts = {}; const idValues = {};  list.forEach(item => {   idCounts[item.id] = (idCounts[item.id] || 0) + 1; });  list.forEach(item => {   if (idCounts[item.id] > 1) {     if (!idValues[item.id]) {       idValues[item.id] = true;     }     item.value = idValues[item.id];     idValues[item.id] = !idValues[item.id];   } });  console.log(list);

这段代码首先统计每个ID出现的次数,然后遍历数组,为重复ID的对象添加value属性,并交替赋予true和false值。 idValues 对象保证了同一个ID的后续对象会得到不同的布尔值。 这种方法简洁高效,易于理解和维护。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享