Lodash查找并保留数组中的项目索引

时间:2018-02-11 20:35:00

标签: javascript grouping lodash

我试图在数组中查找,分组和保留关键字的索引并将其存储为对象。

所以说我有一个像这样的对象:

{
  "foo": ["bar", "bazz"],
  "boo": ["far", "fuzz"]
}

我有这样的句子:

  

Lorem ipsum dolor sit bar,consectetur adipiscing bazz。 Nam luctus fringilla bazz。 Suspendisse mauris far,farquam in far nec,placerat quis leo。模糊模糊,

我想要一个这样的输出:

{
  "foo": [
    {"bar": [22]},
    {"bazz": [50, 77]}
  ],
  "boo": [
    {"far": [102, 118]},
    {"fuzz": [146, 151]}
  ]
}

我正在尝试突出显示文本并对其进行分类。

1 个答案:

答案 0 :(得分:1)

如果要查找索引,可以使用以下代码

const a =
  "Lorem ipsum dolor sit bar, consectetur adipiscing bazz. Nam luctus fringilla bazz. Suspendisse mauris far, aliquam in far nec, placerat quis leo. fuzz fuzz,";

const b = {
  foo: ["bar", "bazz"],
  boo: ["far", "fuzz"]
};

function groupAndFindIndexes(text, groups) {
  return Object.keys(b).reduce((store, id) => {
    store[id] = b[id].map(word => {
      const reg = new RegExp(word, "g");
      const items = [];
      let find = reg.exec(a);
      while (find) {
        items.push(find.index);
        find = reg.exec(a);
      }
      return { [word]: items };
    });
    return store;
  }, {});
}

const result = groupAndFindIndexes(a, b);

结果是:



{
  "foo": [
    {
      "bar": [22]
    },
    {
      "bazz": [50, 77]
    }
  ],
  "boo": [
    {
      "far": [102, 118]
    },
    {
      "fuzz": [146, 151]
    }
  ]
}