Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.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_Node.js_Object_Delete Operator_Inherited - Fatal编程技术网

如何在Javascript中删除继承的对象值?

如何在Javascript中删除继承的对象值?,javascript,node.js,object,delete-operator,inherited,Javascript,Node.js,Object,Delete Operator,Inherited,我从Nodejs中的数据库(使用Mongoose的Mongodb)获取用户结果。 现在我想删除用户结果中的一些键。但无法删除其属性。 我搜索了很多次,但没有找到任何要删除的解决方案 例如:- File1.js 通过mongo查询获取的用户 userModel.findOne(query, projection) .then(function (result) { if (result) return result;

我从Nodejs中的数据库(使用Mongoose的Mongodb)获取用户结果。 现在我想删除用户结果中的一些键。但无法删除其属性。 我搜索了很多次,但没有找到任何要删除的解决方案

例如:-

File1.js 通过mongo查询获取的用户

userModel.findOne(query, projection)
      .then(function (result) {
          if (result)
              return result;
          return false
      })
上面的查询从数据库中获取结果,结果如下

user = {
 f_name: "Vikas",
 l_name: "Kohli",
 key1: "abcD",
 key2: "dhdhdh"

}
File2.js

user = {
     f_name: "Vikas",
     l_name: "Kohli",
     key1: "abcD",
     key2: "dhdhdh"

    }
 inputuser = "dfdfhdfgy"
使用用户结果的key1创建userkey,然后比较

(_.isEqual(userkey, user.key2)){
 //call to next file
}else{
//send response as key not matched
}
执行一些逻辑,获取用户的密钥,然后使用key2执行一些加密方法

最后将key2与userresultkey2(我从db中获取的)进行比较 如果ok,则传递到下一个函数

File3.js 预期产出:-

user = {
         f_name: "Vikas",
         l_name: "Kohli"
        }
当前情景:-

user = {
         f_name: "Vikas",
         l_name: "Kohli",
         key1: "abcD"
         key2: "dhdhdh"

        }
现在希望发送带有已删除的key1和key2的用户结果的响应,但无法删除该密钥

delete关键字不会删除继承的属性,但如果删除原型属性,它将影响从原型继承的所有对象。(来自w3schools,developer.mozilla)

还发现了一些有用的链接,但没有一个适合我。我怎样才能做到这一点


用户对象中存在逗号语法错误,请更正并应用删除运算符

user = {
 f_name: "Vikas",
 l_name: "Kohli",
 key1: "abcD",
 key2: "dhdhdh"
}

delete user.key1
delete user.key2

可以从现有对象创建新对象,只需获取所需的属性:

让用户={
f_名称:“维卡斯”,
l_名称:“科利”,
键1:“abcD”,
键2:“dhdhdh”
}
用户=({f_name,l_name})=>({f_name,l_name}))(用户);

console.log(用户)
delete
在mongoose返回的模型上不起作用,但可以在转换为object后删除

user = user.toObject();
delete user.key1;
delete user.key2;

对于简单的东西来说,文章太长了。
delete key
不起作用吗?一点也不起作用。即使它显示为true但无法删除该键,因为此对象是继承的。您可以删除/覆盖具有相同名称但不是继承属性的对象的自身属性,除非您希望将其从原型本身中删除。通常的解决方法是在引用属性时进行
hasOwnProperty
检查。或者,你可以制作一个对象的深度副本,只包含你需要的属性。应该有一些代码来解释这些对象是如何产生的,以及
delete
是如何不起作用的。问题没有解释这一点,也没有显示继承。没有语法错误。由于错误,我在这里写了一个语法错误。现在我换了这个回答你的问题?你能留下一些反馈吗?如果有100个属性,那么写100个我想发送的属性是不好的。那么你有多少个属性?您需要删除多少属性?无论如何,我添加了一个备选方案,您需要指定要忽略的键列表,而不是要保留的键列表。