👮

jquery.atwhoの補完がundefinedになるならisPlainObjectの罠に注意

2021/07/04に公開

@armorik83 です。いま業務で扱っている機能にjqeury.atwhoというプラグインを導入しているが、補完候補の全項目がundefinedになるというバグを踏んで解消に 2 時間程度持って行かれたので、ここで共有しておく。

if ($.isPlainObject(item)) {
  results.push(item);
} else {
  results.push({
    name: item,
  });
}

$.isPlainObject(item)で検証していて、elseなら勝手にnameプロパティでネストする。そのため hash が一致せずundefinedになるという仕組み。

解決方法は自アプリ側にてJSON.parse(JSON.stringify(item))として一律で強制的にキャストするのが簡単。単純なのに消耗する罠だった。

Discussion