Javascript 空数组处理困难

Javascript 空数组处理困难,javascript,arrays,Javascript,Arrays,我正在使用jQuery插件TagManager。 当表单初始化时,我在处理空数组时遇到问题,我不知道为什么。这是我的剧本 $(".tm-input").each(function() { var e, l; e = $(this); l = e.data("load"); e.tagsManager({ prefilled: $.isEmptyObject(l) ? null : l }); }); 我将

我正在使用jQuery插件TagManager。 当表单初始化时,我在处理空数组时遇到问题,我不知道为什么。这是我的剧本

   $(".tm-input").each(function() {
      var e, l;
      e = $(this);
      l = e.data("load");
      e.tagsManager({
        prefilled: $.isEmptyObject(l) ? null : l
      });
    });
我将数据属性
数据加载
设置为要显示的值。
如果
l
为空且不工作,则
预填充
选项应设置为null。 如果我在上面的
预填充
行中断,
l
变量值为
Array[0]
。如果我选中
$.isEmptyObject(l)?null:l
它返回null,但显示的值是
“[]”
。当
数据加载
值为空时,它将正常工作

以下是受影响的表单html

 <input class="tm-input" data-load="[]" placeholder="enter tags here" value="[]" type="text"></input>  


有人能帮我弄清楚发生了什么事吗

以下更改可能对您有所帮助:

l = e.data("load") || 1 ;

如果未定义l,此行将自动为其赋值1。您可以根据需要分配任意值。

事实证明,TagsManager插件处理空数组的方式存在问题。它忽略预填充选项,只显示“[]”

以下是我所做的工作,以防它能帮助其他人

   $(".tm-input").each(function() {
      var e, l;
      e = $(this);
      l = e.data("load");
      if ($.isEmptyObject(l)) {
        l = null;
        e.val("");
      }
      e.tagsManager({
        prefilled: l
      });

这将强制输入元素值为空字符串(如果为空数组),TagsManager会更好地处理该值

l
很可能是字符串
“[]”
。如果我设置了一个断点,它的值是数组[0]。不管怎样,三元行不应该返回null吗?它正确地返回null,因为
$。isEmptyObject([])==true
是的,但问题是,“[]”最终作为表单上的值。我可能不清楚问题出在哪里。问题是它忽略了设置预填充选项的“$.isEmptyObject(l)?null:l”,并将其设置为“[]”。所有其他值都正常工作。