Javascript 不可变数组的问题

Javascript 不可变数组的问题,javascript,angularjs,d3.js,Javascript,Angularjs,D3.js,最近,我开始使用D3.js绘制晒伤图。数据以JSON格式提供。对于一些设计内容,我想交换一些项目(在D3文档中称为childrens)。 我知道JS中的数组是对象…所以类似这样: var buffer = myarray[2]; 这只是一个参考。因此,用于交换的缓冲区无效(?)。 因此,我在代码中发明了第二个数组(childrens_final),它在交换过程中采用这些项。第二次迭代是寻找一个同名的项来设置一行中同名的项。因此,互换是必要的 var childrens = response_d

最近,我开始使用D3.js绘制晒伤图。数据以JSON格式提供。对于一些设计内容,我想交换一些项目(在D3文档中称为childrens)。 我知道JS中的数组是对象…所以类似这样:

var buffer = myarray[2];
这只是一个参考。因此,用于交换的缓冲区无效(?)。 因此,我在代码中发明了第二个数组(childrens_final),它在交换过程中采用这些项。第二次迭代是寻找一个同名的项来设置一行中同名的项。因此,互换是必要的

var childrens = response_data.data.data['children'];
var childrens_final = []
for (var child = 0; child < childrens.length; child++) {
    var category = childrens[child];
    var found = false;
    var i = child+1
    while (!(found) && (i < childrens.length)) {
        if (childrens[i]['name'] == category['name']) {
            var childrens = swapArrayElements(childrens, child+1, i);
            var one = childrens[child];
            var two = childrens[child+1]
            found = true;
            }
            i++;
            }
            if (found) {
                childrens_final.push(one);
                childrens_final.push(two);
                child++;
            }
            else {
                childrens_final.push(childrens[child])
            }
        }
response.data.data['children'] = childrens_final;
return response.data.data;
问题是图形中的交换仍然没有效果。但是当记录孩子们的期末考试时。控制台中有类似的内容:

Array [ Object, Object, Object, Object, Object, Object, Object, Object, Object ]
对象的顺序正确!但是在数组中仍然存在旧的顺序。 这其实很基本,但我看不到解决办法


顺便说一句,代码在AngularJS下工作。

发现了问题。这是一个D3.js问题。D3正在对数据本身进行排序。必须明确设置:

d3.layout.partition.sort(null)

否则,每个预排序过程都没有效果。

您有样本数据来运行此操作吗?是的,当然。。。抱歉…找不到更好的存储方式找到了这个。有一个可以设置为null的函数.sort()。如果不是,则默认值为降序。但无论如何你是对的。函数是d3.layout.partition.sort()。
d3.layout.partition.sort(null)