Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Arrays_Object - Fatal编程技术网

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谢谢,这很接近,但如果用户已经使用了红色,例如,添加红色以使其不为空或其他颜色。