Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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 使用hasOwnProperty删除重复项_Javascript - Fatal编程技术网

Javascript 使用hasOwnProperty删除重复项

Javascript 使用hasOwnProperty删除重复项,javascript,Javascript,假设我们有一个目标: message { diff: { cat: "Tabby" name: "Meow Meow" } } 你能用hasOwnProperty检查副本并删除副本吗?范例 for (key in message.diff) { //outputs every change when all keys are updated if (message.diff.hasOwnProperty(key)){ this.uniqueAr

假设我们有一个目标:

message { 
  diff: { 
    cat: "Tabby"
    name: "Meow Meow"
  }
}
你能用hasOwnProperty检查副本并删除副本吗?范例

for (key in message.diff) {
   //outputs every change when all keys are updated
   if (message.diff.hasOwnProperty(key)){
     this.uniqueArray.push(key); 
   }
}
编辑:我意识到我想说的可能有点混乱。 我有一个函数,它监听任何可以更新的表单元素,并将输入记录到控制台中。它主要监听将自身输出到数组的属性名,该数组可能包含也可能不包含重复的名称

如果我们多次更新表单字段,它将变成:

Current Output: ['name', 'name', 'name', 'cat']
Desired Ouput: ['name', 'cat']

检查数组中是否不存在对象键

for (key in message.diff) {
   //outputs every change when all keys are updated
   if (message.diff.hasOwnProperty(key) &&  this.uniqueArray.indexOf(key) == -1){
     this.uniqueArray.push(key); 
   }
}
您可以使用Object.keys、Array.prototype.filter、Array.prototype.includes检查对象的属性是否为数组、Array.prototype.push、扩展元素的元素

var消息={ 差异:{ 猫:斑猫, 姓名:喵喵 } } var arr=[name,cat]; arr.push…Object.keysmessage.diff.FilterFunction diff{return!arr.includeDiff}; console.logarr; var消息={ 差异:{ 狮子:斑猫, 老虎:喵喵 } } arr.push …Object.keysmessage.diff .filterfunctiondiff{return!arr.includeDiff}
console.logarr;在diffYes中总是会有不同的属性,但我需要检查属性名是否存在,并在将其添加到数组之前将其删除。是否存在于数组中?可能会有传入数据被复制的情况。例如,我在数组中有此输出=['name','name','name','cat'],我只想有['name','cat']删除重复项是什么意思?您还应该完全放弃hasOwnProperty调用或@Bergi这是什么意思。请举例说明。或者为什么Object.hasOwnPropertykey不正确?我总是这样使用它。这非常有用。我不认为我需要添加任何额外的属性名。@Demon你是什么意思?除非元素不是数组arr中的元素,否则不会将任何元素推送到数组arr。消息的第一次声明表明重复的属性名称不会推送到arr。消息的第二次声明具有arr元素的唯一属性名称;如果属性名称对于arr是唯一的,则对象message.diff的唯一属性名称被推送到arr。这是必需的,是吗?结果是数组arr不应包含重复的元素。使用hasOwnProperty删除重复项数组中没有设置元素,因此数组中应该没有要删除的重复项。@是否要从对象中删除该属性?若不试图阻止数组中的重复元素或从对象中删除属性,那个么不确定问题是什么?这就是javascript在问题中实现的。如果未定义扩展元素和或.includes,则可以使用Array.prototype的.indexOf和.concat。