为了账号安全,请及时绑定邮箱和手机立即绑定

“ object [value] = true”的含义

“ object [value] = true”的含义

红糖糍粑 2021-04-16 18:14:01
我知道这是一个很奇怪的问题,但是,我正在创建一个防止数组中重复值的保护程序,我写了一部分,并从stackoverflow得到了一些帮助,但是我无法正确理解代码的含义所以我用null原型创建了对象并对其进行迭代以检测重复值(我知道Set构造函数要容易得多,但是我在服务器端代码中做到了这一点,并且由于较旧的浏览器不支持Set,因此使用Set会很危险)。这是我的代码var duplicateTagsGuard = Object.create(null);    for(var co = 0; co < tags.length; co++){      let val = tags[co];      if(val in duplicateTagsGuard){        return res.status(409).send({          message: ''        })      }       duplicateTagsGuard[val] = true    }我无法理解的部分是 duplicateTagsGuard[val] = true因此,如果我们一步一步拆分代码并进行解释,就像1.首先创建空对象2.迭代它的循环并声明变量val并使它等于标签数组中的每个元素3.然后检查是否val在重复标签保护对象中,是否使用return语句防止继续进行循环,如果不是,则val向对象添加的值,但我不知道如何在该部分中实现代码(duplicateTagsGuard[val] = true)如果有人可以解释我将很高兴
查看完整描述

2 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

首先创建空对象


它不是在创建 null对象,而是在创建对象,null并将其作为原型检查Object.create文档:


var duplicateTagsGuard = Object.create(null);

console.log(`duplicateTagsGuard is an empty object:`);

console.log(duplicateTagsGuard);

console.log(`Prototye of duplicateTagsGuard is null: `);

console.log(Object.getPrototypeOf(duplicateTagsGuard));

对其循环进行迭代,并声明变量val,使其等于标签数组中的每个元素


这部分是正确的每次循环运行一个新的变量与创建的块范围和分配的电流的值co第所述的索引值tags数组。


然后检查该val是否在duplicateTagsGuard对象中,并且是否使用return语句来防止继续进行循环,如果不是,则我们将val的值添加到对象中,但是我不知道如何用那部分代码实现它( repeatTagsGuard [val] = true)


它正在检查对象val的属性是否duplicateTagsGuard存在,如果已经存在,则使用return返回响应,否则它将duplicateTagsGuard使用括号符号 将该属性添加到对象中,[propertyName]并将其值分配为true。


var duplicateTagsGuard = Object.create(null); //creating a new empty object with prototype as null

let val = "hello"; //creating a new variable

duplicateTagsGuard[val] = true; //adding the property with the value of the variable val

console.log(val in duplicateTagsGuard); //checking if the added property is present in the object


查看完整回答
反对 回复 2021-04-29
  • 2 回答
  • 0 关注
  • 258 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信