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

Javascript引用的数组删除对象

Javascript引用的数组删除对象,javascript,arrays,Javascript,Arrays,我肯定我做错了什么,但我不确定那是什么。我希望req.query与开始时设置的相同,但当我在结束时将它们记录到控制台时,数据和req.query仅包含rnd var req = {}; req.query = { url: 'https://google.com/', width: '500', height: '190', ref: 'http://domain.tld', rnd: '9314871930982' }; var data = req.q

我肯定我做错了什么,但我不确定那是什么。我希望req.query与开始时设置的相同,但当我在结束时将它们记录到控制台时,数据和req.query仅包含rnd

var req = {};
req.query = {
    url: 'https://google.com/',
    width: '500',
    height: '190',
    ref: 'http://domain.tld',
    rnd: '9314871930982'
};
var data = req.query;
delete data.width;
delete data.height;
delete data.url;
delete data.ref;

console.log(req.query);
console.log(data);
当你这样做的时候

var data = req.query;
您正在使
数据
引用与
req.query
同样引用的对象

+-----------------+                     +----------------------------+
|      data       |====================>| url:'https://google.com/'  |
+-----------------+                     | width: '500'               |
                                        | height: '190'              |
+-----------------+                     | ref: 'http://domain.tld'   |
|    req.query    |====================>| rnd: '9314871930982'       |
+-----------------+                     +----------------------------+
因此,通过
data
req.query
对对象的任何更改也将反映在所有其他引用上。这更像是用两个不同的名称访问同一个对象

根据这种理解,如果我们查看您的代码,当您从
数据中删除内容时,实际上是从
req.query
引用的对象中删除

如果不希望发生这种情况,则需要使用中提到的任何方法克隆
req.query

可能的重复