我想在foreach循环中创建对象:
我从这里开始:
data.forEach(function (el) {
var dynamic_var = new Quill(el['editor']);
dynamic_var.on('text-change', logHtmlContent);})
但是,dynamic_var被“覆盖”了,我想保持唯一性。
我检查一些html元素,对于发现的每个html元素,我想创建一个新的Object,并执行Object方法。
在我的情况下,变量每次迭代都会获得一个新对象,而不是一个新变量。
答案 0 :(得分:4)
这是您要找的吗?
var quillValueContainer = {};
// ...
data.forEach(function(el) {
quillValueContainer[el] = new Quill(el['editor']);
quillValueContainer[el].on('text-change', logHtmlContent);
});
这仅在el
是字符串或数字时才有效。像这样查看使用方式:el['editor']
,让我觉得它是Object
,在这种情况下,您可以改用元素的索引。
var quillValueContainer = {}; // [] should also work for indexes
// ...
data.forEach(function(el, index) {
quillValueContainer[index] = new Quill(el['editor']);
quillValueContainer[index].on('text-change', logHtmlContent);
});
此外,我不知道这是否是您需要做的事情,但是您可以通过执行以下操作来检查Quill
对象是否已经初始化,并跳过重复对象:
data.filter(function(el, index){ return !quillValueContainer[index]; }).foreach(...
或
data.forEach(function(el, index) {
if(quillValueContainer[index]) return;
quillValueContainer[index] = new Quill(el['editor']);
quillValueContainer[index].on('text-change', logHtmlContent);
});