Javascript 如何检查用户是否已使用该属性?
我有一个示例数组:Javascript 如何检查用户是否已使用该属性?,javascript,arrays,object,Javascript,Arrays,Object,我有一个示例数组: [ { "id": 1, "name": "Bob", }, { "id": 2, "name": "John", }, { "id": 3, "name": "Bob&qu
[
{
"id": 1,
"name": "Bob",
},
{
"id": 2,
"name": "John",
},
{
"id": 3,
"name": "Bob",
},
{
"id": 4,
"name": "Bob",
},
{
"id": 5,
"name": "Bob",
}
]
在这个数组中,我想通过循环向数组中的每个对象添加属性颜色,但如果用户已经指定了该属性颜色,则不要添加任何其他颜色,保持第一个属性颜色已指定 它现在看起来像是给用户添加了随机颜色,无法检查用户是否已经有了红色并且不需要另一种颜色(需要保留第一种颜色-红色) 我需要实现的是: 当用户存在时-只向其添加一种颜色,对于其他用户,为每个用户部分添加相同的唯一颜色
const myArr=[
{
“id”:1,
“姓名”:“鲍勃”,
},
{
“id”:2,
“姓名”:“约翰”,
},
{
“id”:3,
“姓名”:“鲍勃”,
},
{
“id”:4,
“姓名”:“鲍勃”,
},
{
“id”:5,
“姓名”:“鲍勃”,
}
];
对于(变量i=0,len=myArr.length;i
想法是当循环将红色指定给Bob时,我不想指定 还有其他颜色吗?只有红色 使用数组
reduce
&内部回调检查使用find
。在find
回调中,检查是否存在名称匹配的数组,以及该数组是否具有属性find
如果找不到该对象,将返回undefined
。在这种情况下,将新属性添加到对象
const myArr=[{
id:1,
姓名:“鲍勃”
},
{
id:2,
姓名:“约翰”
},
{
id:3,
姓名:“鲍勃”
}
];
变量颜色=[“#A43548”、“35A4A0”、“#55B747”、“#1F85DE”];
myArr.reduce((会计科目,当前)=>{
常数x=附件查找(
item=>item.name==curr.name&&item.hasOwnProperty(“avatarcolor”)
);
如果(!x){
curr[“avatarcolor”]=颜色[Math.floor(Math.random()*colors.length)];
}否则{
curr[“avatarcolor”]=x.avatarcolor;
}
加速推力(电流);
返回acc;
}, []);
console.log(myArr)
将myArr[b]
更改为myArr[i]
和myArr.hasOwnProperty(“avatarcolor”)
更改为myArr[i]。hasOwnProperty(“avatarcolor”)
示例数据至少需要一个指定了avatarcolor的元素。@gillall为什么?我无法为用户添加唯一的颜色,但没有?“但如果用户已经分配了该属性颜色,则不要添加任何其他颜色,保持第一个颜色已分配。”想法是,当循环将颜色红色分配给Bob时,我不想再为其分配任何颜色,只为该颜色分配红色,其他名称也一样。可以使用以下代码一次性添加颜色:myArr[i] .avatarcolor=myArr[i].avatarcolor | | colors[random]@brk谢谢,这很接近,但如果用户已经使用了红色,例如,添加红色以使其不为空或其他颜色。