如何在代码中使用闭包
how can i utilize closure in my code?
我有一个类似的JSON:
[
{"data":"a"},
{"data":"b"},
{"data":"c"}
]
使用JavaScript,我想添加一个增量id字段,如下所示:
[
{"data":"a","id":"xx_1"},
{"data":"b","id":"xx_2"},
{"data":"c","id":"xx_3"}
]
但是我想使用的JavaScript闭包
var cnt
在下面的代码中,我该怎么做?
var data=[
{"data":"a"},
{"data":"b"},
{"data":"c"}
];
var cnt=0;
data.map(function(data){
data.id="xx_"+cnt;
cnt++;
})
console.log(data);
在.map
回调中,第二个参数是index
,所以您可以使用它,而不要使用不必要的变量cnt
,比如这个
var data = [
{"data":"a"},
{"data":"b"},
{"data":"c"}
];
data = data.map(function (element, index) {
element.id = 'xx_' + (index + 1);
return element;
});
console.log(data);
不需要使用.map
,因为您只修改数组中的对象。使用.forEach((value, index) => {})
var data = [
{"data":"a"},
{"data":"b"},
{"data":"c"}
];
data.forEach(function(obj, index) {
obj.id = 'xx_' + (index + 1);
});
检查这个小提琴
var data=[
{"data":"a"},
{"data":"b"},
{"data":"c"}
];
var counter = (function () { //this is a closure that will return an incremented count value everytime it is called
var count = 1; // you can initialize to a different value if you want
return function () {return count += 1;}
})();
data.map(function(data){
data.id="xx_"+counter(); //calling the counter method
});
console.log(data);
相关文章:
- 如何在Angularjs中重构闭包中的重复代码
- 使用Google闭包编译器调试代码删除
- 以下代码片段是命名空间还是闭包
- @internal react 代码中的 JavaScript 文档标签,是 jsdoc、闭包还是其他什么
- 闭包编译器将't关闭可疑代码警告
- 使用闭包编译器简单优化从函数内部删除调试代码
- 使用闭包编译器编写更好的面向对象JavaScript完整示例代码
- Node.js:异步代码 + js 闭包的问题
- 使用闭包编译器缩小包含 Jinja2 表达式的 JavaScript 代码
- 闭包编译器缩小代码中 (0, obj.method)(param1, param2) 的目的
- 如何在代码中使用闭包
- 为什么在使用Function构造函数进行动态代码求值时没有形成闭包
- 如何告诉闭包编译器忽略代码
- 尝试理解一些与JS中的闭包相关的代码
- 为什么我应该考虑在代码中使用JavaScript闭包
- Google闭包编译器不会移除带有@define注释的不可访问代码
- 获取周围的JS闭包代码作为文本
- 是否可以将匿名函数标记为“实时代码”?这样闭包编译器就不会删除它
- 为什么我有两个不同的结果,当我执行这个javascript闭包代码
- 在JavaScript中调用闭包时,是在输入闭包代码时创建的新执行上下文