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

时间:2019-02-01 14:55:13

标签: javascript javascript-objects

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

我从这里开始:

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

但是,dynamic_var被“覆盖”了,我想保持唯一性。

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

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

1 个答案:

答案 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);
});