d3中恒等函数(“function(d){return d;}”)的简写是什么
What is the shorthand in d3 for the identity function ("function(d) { return d; }")?
浏览d3文档,我看到这个代码(身份函数)到处重复:
function(d) { return d; }
d3中有没有内置的方法可以做到这一点?我知道我可以创建自己的no-op标识函数并在任何地方使用它,但d3似乎应该提供这一点。
我想知道为什么没有d3.identity
函数作为库的一部分,也找不到不使用它的理由。
从性能的角度来看,定义标识函数比重用Object
构造函数具有更好的性能。如果在不同的类型中重用相同的标识函数,则差别不大。这里有一些性能测试。
所以在我的情况下,我滥用D3并自己添加了功能:
d3.identity = function(d) { return d; }
如果您使用下划线,那么您也可以使用_.identity函数。
关于使用Object
构造函数,我的假设是,每次调用它时都会创建一个新的、不必要的对象,这会浪费内存和CPU时间,用于创建和垃圾收集。在一些运行时中,这可以针对诸如数字之类的不可变类型进行优化。
EDITPhrogz有一篇简短的文章,展示了在使用D3时减少Lambda数量的一些有用的简写,其中包括一个身份函数。
我曾经见过Mike do.data(Object),它似乎可以在中工作
http://tributary.io/inlet/5842519
但我不知道为什么我再也看不到它了
var svg = d3.select("svg")
var data = [[10,20],[30,40]];
svg.selectAll("g")
.data(data)
.enter()
.append("g")
.attr("transform", function(d,i) { return "translate(" + [i * 100, 0] + ")"})
.selectAll("circle")
//.data(function(d) { console.log(d); return d })
.data(Object)
.enter()
.append("circle")
.attr({
cx: function(d,i) { return 100 + i * 40 },
cy: 100,
r: function(d,i) { return d }
})
相关文章:
- 这是什么 ==- javascript 运算符
- 我的单元测试选项是什么
- 打破承诺链的好方法是什么
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Javascript中的空白是什么
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 在JavaScript中拆分日期字符串的更好方法是什么
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- 处理浮点错误的最佳方法是什么
- javascript导入的最佳实践是什么
- 基于窗口宽度jquery的函数的替代方法是什么
- 在ng重复循环中显示条件内容的最佳方式是什么
- 我的客户端选项是什么
- jQuery"return{foo:bar,foo2:bar2}"-它是什么
- 在 JavaScript 中使用 return 作为函数的原因是什么?
- onsubmit=“return false”是什么意思?(JavaScript,jQuery)
- “return”关键字在“forEach”函数中是什么意思
- d3中恒等函数(“function(d){return d;}”)的简写是什么
- 这种语法在 JavaScript return {hello: “world”}[something] 中是什么意思
- ' return false; '对自定义事件的影响是什么?