“ object [value] = true”的含义

我知道这是一个很奇怪的问题,但是,我正在创建一个防止数组中重复值的保护程序,我写了一部分,并从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)如果有人可以解释我将很高兴


红糖糍粑
浏览 259回答 2
2回答

慕娘9325324

首先创建空对象它不是在创建 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 nulllet val = "hello"; //creating a new variableduplicateTagsGuard[val] = true; //adding the property with the value of the variable valconsole.log(val in duplicateTagsGuard); //checking if the added property is present in the object
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript