Javascript 如何在不使用DOM元素的情况下在d3中查找输入和退出的数据?

Javascript 如何在不使用DOM元素的情况下在d3中查找输入和退出的数据?,javascript,arrays,d3.js,Javascript,Arrays,D3.js,假设我有两个数组 a1 = [1,2,3,4,5]; a2 = [1,3,4,5,6]; 我想知道在这个数组中输入(6)和退出(2)的是哪一个 D3有自己的函数enter(),exit(),但它们在DOM上工作 我可以简单地使用它而不附加、删除任何HTML元素吗?函数的.enter()和.exit()函数对选择操作,这些选择是DOM元素的集合。为了使用它们,您必须选择元素,因此在不添加或删除和DOM元素的情况下使用它们没有多大意义 对于使用默认键函数的数据,如果a1是绑定到DOM元素的数据,并

假设我有两个数组

a1 = [1,2,3,4,5];
a2 = [1,3,4,5,6];
我想知道在这个数组中输入(6)和退出(2)的是哪一个

D3有自己的函数
enter()
exit()
,但它们在DOM上工作

我可以简单地使用它而不附加、删除任何HTML元素吗?

函数的
.enter()
.exit()
函数对选择操作,这些选择是DOM元素的集合。为了使用它们,您必须选择元素,因此在不添加或删除和DOM元素的情况下使用它们没有多大意义


对于使用默认键函数的数据,如果
a1
是绑定到DOM元素的数据,并且您将
a2
与之匹配(反之亦然),则enter或exit选项中不会出现任何内容,因为两个数组的长度相同。默认情况下,D3根据数组索引匹配数据。

好的,据我所知,D3中没有用于此类操作的快捷方式。因此,我使用了基于jQuery的解决方案。为了将来的参考,我在这里分享

Array.prototype.findDiff = function(that) {
    return {
        exit: $(this).not(that).get(),
        enter: $(that).not(this).get()
    };
};
所以

[0,1,2,3,4].findDiff([1,2,3,4,5])

将给予

{
    "exit": [
        0
    ],
    "enter": [
        5
    ]
}

您如何知道是否已输入或退出?“默认情况下,D3根据数组索引匹配数据。”但如果我使用
selection.data(someData,function(d,I){return d})
它将匹配内容本身,因此这不是问题。是的,在本例中,您将给D3一个键函数,告诉它如何匹配。