在foreach循环中动态创建javascript对象

use*_*631 2 javascript javascript-objects

我想在 foreach 循环中创建对象:

我从这个开始:

data.forEach(function (el) {
        var dynamic_var = new Quill(el['editor']);
         dynamic_var.on('text-change', logHtmlContent);})
Run Code Online (Sandbox Code Playgroud)

但是,dynamic_var 被“覆盖”了,我想保持独特。

我检查了一些 html 元素,对于我发现的每个元素,我想创建一个新对象,并执行对象方法。

在我的情况下,变量每次迭代都会得到一个新对象,不是新变量。

nic*_*oum 5

这就是你要找的吗?

var quillValueContainer = {};

// ...

data.forEach(function(el) {
  quillValueContainer[el] = new Quill(el['editor']);
  quillValueContainer[el].on('text-change', logHtmlContent);
});
Run Code Online (Sandbox Code Playgroud)

这仅适用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);
});
Run Code Online (Sandbox Code Playgroud)

另外,我不知道这是否是您需要做的事情,但是您可以通过执行以下操作来检查Quill对象是否已初始化并跳过重复项(如果已初始化):

data.filter(function(el, index){ return !quillValueContainer[index]; }).foreach(...
Run Code Online (Sandbox Code Playgroud)

或者

data.forEach(function(el, index) {
  if(quillValueContainer[index]) return;
  quillValueContainer[index] = new Quill(el['editor']);
  quillValueContainer[index].on('text-change', logHtmlContent);
});
Run Code Online (Sandbox Code Playgroud)