Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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_Copy_Deep Copy - Fatal编程技术网

Javascript 节点从对象中删除字段或属性

Javascript 节点从对象中删除字段或属性,javascript,node.js,object,copy,deep-copy,Javascript,Node.js,Object,Copy,Deep Copy,通常在Javascript中,我们会这样做- var someObj = {}; someObj.name="somename"; delete someObj.name; 但在NodeJS中,删除对象字段/属性的正确方法是什么 用例:在您的NodeJs Rest API(例如Express server Rest API)中,您已收到20个标头字段,在内部,您必须调用另一个只需要18个(共20个)标头的服务。您可以创建全新的标题对象,并通过代码/循环等设置每个标题对象。一

通常在Javascript中,我们会这样做-

var someObj = {};
someObj.name="somename";
delete someObj.name;
但在NodeJS中,删除对象字段/属性的正确方法是什么

用例:在您的NodeJs Rest API(例如Express server Rest API)中,您已收到20个标头字段,在内部,您必须调用另一个只需要18个(共20个)标头的服务。您可以创建全新的标题对象,并通过代码/循环等设置每个标题对象。一种方法是创建现有/传入标题对象的浅层副本,并删除/删除额外的2个字段

我已经尝试了上面的示例代码,它工作得很好,但不确定这是推荐的方法还是NodeJs本身固有的可用方法

标题的更多示例 您的express服务器请求标头

let headers=req.headers;
//assuming it has content-type:"application/json" , uuid:"some-test-uuid"
delete headers.uuid 
//now after delete it has content-type:"application/json" only


如果您当前的代码没有导致任何问题,您可以通过实际的连接负载看到这些问题,那么这可能是非常好的

如果您必须处理大量的请求,那么一个潜在的问题是
delete
可能会很慢,并且节点会运行V8。如果您愿意,您可能会发现性能略有提高

  • 设置不需要
    未定义
    的属性,而不从对象中实际删除它们(确保服务可以处理此格式),或

  • 使用对象rest语法收集您确实需要的属性,例如:

    function handleRequest(someObjWithLotsOfProperties) {
      const { name, userId, ...rest } = someObjWithLotsOfProperties;
      callOtherAPI(rest);
    }
    
    使用除
    name
    userId
    之外的所有属性调用其他API


他们可以考虑如果当前的方法变得明显地有问题。在Node.JS中删除属性与浏览器JavaScript一样。不能像删除对象属性那样删除标题。nodejs中的语言只是Javascript。事实上,它是在Chrome中运行的同一个Javascript引擎。因此,您可以使用

delete
从对象中删除属性,就像Javascript中的任何地方一样。对于请求头,它完全取决于您使用的API以及事物的结构。您必须向我们展示这些代码,以便我们提供建议。@quicVO-我知道这是JavaScript,并且已经给出了我如何处理它的示例代码。尝试查看任何本机Nodejs函数(本机,我指的是fs、require等)