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中的对象是通过引用传递的