Javascript D3:如何检测.each()的结尾
在D3.js中,我使用以下方法遍历数据:Javascript D3:如何检测.each()的结尾,javascript,arrays,d3.js,dynamic-arrays,Javascript,Arrays,D3.js,Dynamic Arrays,在D3.js中,我使用以下方法遍历数据: elem.allDataRows.each(function(d, i) { elem.checkboxMemory[i] = { id: d.key, isChecked: d.isChecked }; }); 因为这个过程是异步的,所以我需要能够确定循环过程何时完成 在D3中,是否有任何方法可以检测到.each()的结尾?不是每个时间间隔,而是整个过程 请注意,elem.allDataRows是一个数
elem.allDataRows.each(function(d, i) {
elem.checkboxMemory[i] = {
id: d.key,
isChecked: d.isChecked
};
});
因为这个过程是异步的,所以我需要能够确定循环过程何时完成
在D3中,是否有任何方法可以检测到.each()的结尾?不是每个时间间隔,而是整个过程
请注意,elem.allDataRows是一个数组
谢谢大家! 一种简单的方法是检查索引i的值:
每个
都是同步的
d3.选择全部('div')。每个(函数(){
log(d3.select(this.text());
});
日志(“完成”);
功能日志(文本){
var d=document.createElement('pre');
d、 innerHTML='日志:'+文本;
document.getElementById('output').appendChild(d);
}
1.
2.
首先,我会说。每个实际上都是同步的。因此,如果您只想在代码完成后执行代码,那么您可以在调用后的行中执行此操作
如果在循环期间试图识别集合中的最后一项,以便应用特殊逻辑,则需要将当前索引与jquery对象的长度进行比较。请参见下面的示例
var lastIndex = elem.allDataRows.length - 1;
elem.allDataRows.each(function(d, i) {
if (i == lastIndex) {
// Do something cool here!
}
elem.checkboxMemory[i] = {
id: d.key,
isChecked: d.isChecked
};
});
每个
都是同步的。的确如此。谢谢。这和我发布这个问题后所学的很相似,但你基本上明白了。非常感谢。这和我发布这个问题后的想法很相似,但你基本上明白了。非常感谢。
var lastIndex = elem.allDataRows.length - 1;
elem.allDataRows.each(function(d, i) {
if (i == lastIndex) {
// Do something cool here!
}
elem.checkboxMemory[i] = {
id: d.key,
isChecked: d.isChecked
};
});