Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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 - Fatal编程技术网

Javascript对象到处都在变化,如果我在某个地方发生变化

Javascript对象到处都在变化,如果我在某个地方发生变化,javascript,Javascript,我有一个对象,其中一个值是数字数组,我调用两个函数,第一个函数对数据进行排序并显示,第二个函数只显示它 问题是,在第二个函数中,数据也被排序。(我没有在那里排序,数据已经排序) 如何修复它?您的函数1正在对数据进行排序,这意味着在调用函数2时将对数据进行排序,您可以在函数1中接收数据,但从数据中创建一个新变量,然后进行更新,以使原始数据永远不会更改 但是,为function1和function2显示一些代码确实会帮助我们提供一些有用的代码:)您的function1正在对数据进行排序,这意味着在调

我有一个对象,其中一个值是数字数组,我调用两个函数,第一个函数对数据进行排序并显示,第二个函数只显示它

问题是,在第二个函数中,数据也被排序。(我没有在那里排序,数据已经排序)


如何修复它?

您的函数1正在对数据进行排序,这意味着在调用函数2时将对数据进行排序,您可以在函数1中接收数据,但从数据中创建一个新变量,然后进行更新,以使原始数据永远不会更改


但是,为function1和function2显示一些代码确实会帮助我们提供一些有用的代码:)

您的function1正在对数据进行排序,这意味着在调用function2时,数据将被排序,您可以在function1接收数据,但是,从数据中创建一个新变量,然后进行更新,这样原始数据就不会改变


但是,显示函数1和函数2的一些代码确实会帮助我们提供一些有用的代码:)

一个简单的解决方案是创建对象的副本,然后使用它。

如果不需要,可以使用以下方法创建对象的副本:

b = Object.create(a)
在本例中,b是a的副本,但如果在a中进行更改,它将不会反映在b中。有关更多信息:

原因:在javascript中,对象是通过引用传递的
一个简单的解决方案是创建对象的副本,然后使用它。

如果不需要,可以使用以下方法创建对象的副本:

b = Object.create(a)
在本例中,b是a的副本,但如果在a中进行更改,它将不会反映在b中。有关更多信息:

原因:在javascript中,对象是通过引用传递的

在排序之前在排序函数中创建克隆

像这样试试

var cloneData=data.slice();

在排序之前在排序函数内创建克隆

像这样试试

var cloneData=data.slice();

您需要复制对象才能执行此操作。它与对象引用等有关

非常简短的解释(太简短了,不能公正地解释)是function1和function2使用相同的数组,所以当function1更改它时,这在function2中是可见的。仔细阅读这个问题,作为一名程序员,这绝对是你应该研究的

var data = ['b', 'c', 'a'];
var sortedData = data.slice(0); // shallow copy, objects in the array are not copied
调用使用
sortedData进行排序的函数
,调用仅使用
数据显示的函数


阅读更多有关对象引用和基元值的信息,以了解更改一个数组中的值将如何影响另一个数组,但如果不再更改值,则无需担心此问题。

您需要复制对象才能执行此操作。它与对象引用等有关

非常简短的解释(太简短了,不能公正地解释)是function1和function2使用相同的数组,所以当function1更改它时,这在function2中是可见的。仔细阅读这个问题,作为一名程序员,这绝对是你应该研究的

var data = ['b', 'c', 'a'];
var sortedData = data.slice(0); // shallow copy, objects in the array are not copied
调用使用
sortedData进行排序的函数
,调用仅使用
数据显示的函数


阅读更多有关对象引用和基元值的信息,了解更改一个数组中的值将如何影响另一个数组,但如果不再更改值,则不必担心这个问题。

至少您向我们展示了函数调用。。。一些函数体如何?您需要提供更多关于如何对数据进行排序等的代码,因为在javascript中,对象是通过引用传递的,至少您向我们展示了函数调用。。。一些函数体怎么样?您需要提供更多关于如何对数据进行排序的代码,例如,因为javascript中的对象是通过引用传递的