【问题标题】:Replace the records of particular category替换特定类别的记录
【发布时间】:2021-10-14 14:38:12
【问题描述】:

在一种情况下,我需要用新的传入数据源替换缓存数据中的现有记录。寻找更简洁的方法来处理数组操作。

例如:

var userCategory = [
    {
      id: 'platinum',
      name: 'bob',
    },
    {
      id: 'platinum',
      name: 'bar',
    },
    {
      id: 'platinum',
      name: 'foo',
    },
    {
      id: 'gold',
      name: 'tom',
    },
    {
      id: 'silver',
      name: 'billy',
    },
  ];


这里是特定类别的新用户

var newPlatinumUsers = [
    {
      id: 'platinum',
      name: 'bob',
    },
    {
      id: 'platinum',
      name: 'mike',
    },
  ];

这是所需的预期结果:

  var expected = [
    {
      id: 'platinum',
      name: 'bob',
    },
    {
      id: 'platinum',
      name: 'mike',
    },
    {
      id: 'gold',
      name: 'tom',
    },
    {
      id: 'silver',
      name: 'billy',
    },
  ];

我尝试从现有记录中过滤所有白金用户,然后添加新记录,但它看起来很冗长

有没有像 lodash 运算符这样更简洁的方法? 谢谢你的时间!!!

【问题讨论】:

  • 如果您没有在问题中提供代码,我们无法就您的代码向您提供建议。

标签: javascript ecmascript-6 lodash


【解决方案1】:

你可能正在寻找这个。

function getUnique(arr){

// removing duplicate
let uniqueArr = [...new Set(arr)];

document.write(uniqueArr);
}

const array = ['acer','HP','Apple','Apple','something'];

// calling the function
getUnique(array);

验证我的回答是否对您有帮助。

【讨论】:

  • 对不起@Nishant,我已经更新了问题。我的情况是我需要替换特定类别的记录。
【解决方案2】:

请找到相同的 Javascript 实现

var userCategory = [
  { id: 'platinum', name: 'bob', },
  { id: 'platinum', name: 'bar', },
  { id: 'platinum', name: 'foo', },
  { id: 'gold', name: 'tom', },
  { id: 'silver', name: 'billy', },
];
var newPlatinumUsers = [
  { id: 'platinum', name: 'bob', },
  { id: 'platinum', name: 'mike', },
];
const result = [...newPlatinumUsers];
userCategory.forEach((node) => {
  if(node.id !== 'platinum') {
    result.push(node);
  }
});
console.log(result);

【讨论】:

    【解决方案3】:

    使用此解决方案,您可以更改多个类别:

    var userCategory = [
        {id: 'platinum',name: 'bob'},
        {id: 'platinum',name: 'bar'},
        {id: 'platinum',name: 'foo'},
        {id: 'gold',name: 'tom'},
        {id: 'silver',name: 'billy'},
      ];
      
    var newUsers = [
      {id: 'platinum',name: 'bob'},
      {id: 'platinum',name: 'mike'},
      {id: 'gold',name: 'will'},
      {id: 'gold',name: 'jerry'},
    ];
    
    const idsToReplace = {}
    
    const result = [...newUsers]
    
    result.forEach(u => {
      idsToReplace[u.id] = true
    })
    
    userCategory.forEach(u => {
      if(!idsToReplace[u.id]){
        result.push(u)
      }
    })
    
    console.log(result)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-15
      相关资源
      最近更新 更多