Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 搜索数组中的对象并更新(如果存在或添加)_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript 搜索数组中的对象并更新(如果存在或添加)

Javascript 搜索数组中的对象并更新(如果存在或添加),javascript,ecmascript-6,Javascript,Ecmascript 6,这就是我的登录用户阵列的外观: const connectedUsers = [{ user: { uuid: 'b62-2dw', points: 1, }, id: "1234567" }]; 当新用户登录到我的系统时,我将查看此表: this.connectedUsers = [ ...this.connectedUsers, { ...payload, id: client.id }, ]; 然后我的数组如下所示:(为了更好地理

这就是我的登录用户阵列的外观:

const connectedUsers = [{
  user: {
    uuid: 'b62-2dw',
    points: 1,
  },
  id: "1234567"
}];
当新用户登录到我的系统时,我将查看此表:

this.connectedUsers = [
  ...this.connectedUsers,
  {
    ...payload,
    id: client.id
  },
];
然后我的数组如下所示:(为了更好地理解,我给出了这个)

如果uuid类似于
663 dda
的用户更新了他的点,我将再次执行此方法。 当我让它保持原样时,类似的事情就会发生:

const connectedUsers = [{
    user: {
      uuid: 'b62-2dw',
      points: 1,
    },
    id: "1234567"
  },
  {
    user: {
      uuid: '663-dda',
      points: 5,
    },
    id: "33332"
  },
  {
    user: {
      uuid: '663-dda',
      points: 6,
    },
    id: "33332"
  }
];
我想编写一个非常好的(使用ES6+算法,首先检查这个数组中是否存在这样的对象(通过
id
user.uuid
进行检查)。如果是,请更新。如果没有,请添加新对象。所以它应该是这样的:

const connectedUsers = [{
    user: {
      uuid: 'b62-2dw',
      points: 1,
    },
    id: "1234567"
  },
  {
    user: {
      uuid: '663-dda',
      points: 6,
    },
    id: "33332"
  }
];

在用户登录时更新阵列的代码中,可以执行以下操作:

const connectedUsers = [{
    user: {
      uuid: 'b62-2dw',
      points: 1,
    },
    id: "1234567"
  },
  {
    user: {
      uuid: '663-dda',
      points: 6,
    },
    id: "33332"
  }
];
if(!this.connectedUsers.find(user=>user.user.uuid===payload.user.uuid){
此参数为0.connectedUsers=[
…这是连接用户,
{…有效负载,id:client.id},
];
}

在用户登录时更新阵列的代码中,可以执行以下操作:

const connectedUsers = [{
    user: {
      uuid: 'b62-2dw',
      points: 1,
    },
    id: "1234567"
  },
  {
    user: {
      uuid: '663-dda',
      points: 6,
    },
    id: "33332"
  }
];
if(!this.connectedUsers.find(user=>user.user.uuid===payload.user.uuid){
此参数为0.connectedUsers=[
…这是连接用户,
{…有效负载,id:client.id},
];
}
const connectedUsers=[{
用户:{
uuid:'b62-2dw',
要点:一,,
},
id:“1234567”
},
{
用户:{
uuid:'663 dda',
要点:五,,
},
身份证号码:“33332”
},
{
用户:{
uuid:'663 dda',
要点:6,
},
身份证号码:“33332”
}];
//让我们拿一些样本对象
常数newObDuplicateUuid={
用户:{
uuid:'663 dda',
要点:6,
},
id:“3333290”
}
常量newObDuplicateId={
用户:{
uuid:'756 dda',
要点:6,
},
身份证号码:“33332”
}
常数newObFresh={
用户:{
uuid:'756 dda',
要点:6,
},
id:“3333290”
}
让checkRule=connectedUsers.every(item=>item.user.uuid!=newobduplicateuid.user.uuid&&item.id!=newobduplicateuid.id)
//对于相同的uuid返回false
checkRule=connectedUsers.every(item=>item.user.uuid!=newObDuplicateId.user.uuid&&item.id!=newObDuplicateId.id)
//对于相同的id返回false
checkRule=connectedUsers.every(item=>item.user.uuid!=newObFresh.user.uuid&&item.id!=newObFresh.id)
//返回真值
log('通过验证:'+检查规则);
const result=checkRule?[…connectedUsers,NewObjFresh]:“存在重复值”;
console.log(结果);
const connectedUsers=[{
用户:{
uuid:'b62-2dw',
要点:一,,
},
id:“1234567”
},
{
用户:{
uuid:'663 dda',
要点:五,,
},
身份证号码:“33332”
},
{
用户:{
uuid:'663 dda',
要点:6,
},
身份证号码:“33332”
}];
//让我们拿一些样本对象
常数newObDuplicateUuid={
用户:{
uuid:'663 dda',
要点:6,
},
id:“3333290”
}
常量newObDuplicateId={
用户:{
uuid:'756 dda',
要点:6,
},
身份证号码:“33332”
}
常数newObFresh={
用户:{
uuid:'756 dda',
要点:6,
},
id:“3333290”
}
让checkRule=connectedUsers.every(item=>item.user.uuid!=newobduplicateuid.user.uuid&&item.id!=newobduplicateuid.id)
//对于相同的uuid返回false
checkRule=connectedUsers.every(item=>item.user.uuid!=newObDuplicateId.user.uuid&&item.id!=newObDuplicateId.id)
//对于相同的id返回false
checkRule=connectedUsers.every(item=>item.user.uuid!=newObFresh.user.uuid&&item.id!=newObFresh.id)
//返回真值
log('通过验证:'+检查规则);
const result=checkRule?[…connectedUsers,NewObjFresh]:“存在重复值”;

console.log(result);
这是我的方法。一个函数涵盖了这两种情况。只需传递
数组和
新条目
,它就会返回
更新列表

函数更新RADDUSER(ListoUsers,newEntry){
让发现=错误;
const updateUserList=ListoUsers.map(条目=>{
if(entry.user.uuid==newEntry.user.uuid){
发现=真;
返回新条目;
}
返回条目;
});
如果(!找到){
updateUserList.push(新用户);
}
返回updateUserList;
}

这是我的方法。一个函数涵盖了这两种情况。只需传递
数组和
新条目
,它就会返回
更新列表

函数更新RADDUSER(ListoUsers,newEntry){
让发现=错误;
const updateUserList=ListoUsers.map(条目=>{
if(entry.user.uuid==newEntry.user.uuid){
发现=真;
返回新条目;
}
返回条目;
});
如果(!找到){
updateUserList.push(新用户);
}
返回updateUserList;
}
请添加您的尝试。为什么不改为尝试使用?请添加您的尝试。为什么不改为尝试使用?