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。