Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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数组包含相同对象的倍数当我更新索引0处的对象时,它会自动更新索引1处的对象吗?_Javascript_Arrays_Angularjs - Fatal编程技术网

Javascript数组包含相同对象的倍数当我更新索引0处的对象时,它会自动更新索引1处的对象吗?

Javascript数组包含相同对象的倍数当我更新索引0处的对象时,它会自动更新索引1处的对象吗?,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,您可以看到要插入的对象中的ruleCounter属性为1 在数组中插入后,我们可以看到ruleCounter属性的值为1 然后我尝试插入同一个对象,但这次ruleCounter的值为2,但神奇的是,在数组中,您可以看到数组中两个对象的ruleCounter的值都变为2 请说明为什么数组不同索引中的ruleCounter值会自动更新 var droppedObjects = []; //this array will contain the list of rules dropped on the

您可以看到要插入的对象中的ruleCounter属性为1 在数组中插入后,我们可以看到ruleCounter属性的值为1 然后我尝试插入同一个对象,但这次ruleCounter的值为2,但神奇的是,在数组中,您可以看到数组中两个对象的ruleCounter的值都变为2

请说明为什么数组不同索引中的ruleCounter值会自动更新

var droppedObjects = []; //this array will contain the list of rules dropped on the drop zone area.
    $scope.onDropComplete1 = function(data, evt) {
        ruleCounter++;
        data.ruleCounter= ruleCounter;
        console.log(data);
        //var index = $scope.droppedObjects.indexOf(data);
        if (data !== null) {
            droppedObjects.push(data); //droping data into the array when drag and drop is complete
            console.log(droppedObjects);
        } else {
            //console.log($scope.droppedObjects1);
        }

    };

在javascript中,复杂对象通过引用传递。这意味着,如果您有:

var objectA = {/* your properties */};
var objectB = objectA;
两个变量都包含对同一对象的引用。因此,如果在使用这些变量中的任何一个时更改属性,则同时更改另一个变量中的值。 如果要保持不同的状态,则需要创建对象的副本

var objectA = {/* your properties */};
var objectB = new Object(objectA); // or Object.create(objectA)

现在两者都是不同的对象,您可以单独更改它们的属性

请提供您的代码。这张截图并不能说只是提供了你的代码。您的代码中可能存在一些错误。需要在推送之前克隆对象。您正在推送对象,但未克隆对象。它将保留referencePossible replicate:,特别注意我答案末尾的隐喻:P