如何使用 JavaScript 将数组中与特定字符串匹配的元素的名称置空?

如何使用 javascript 将数组中与特定字符串匹配的元素的名称置空?

js 将数组中特定名称值置空

问题:

给定一个数组 list,数组中每个元素都是一个对象,具有 name 属性。如何编写一个通用的方法,在 aa 字符串中找到与 list 中各 name 值匹配的项时,将名称置空?

示例:

  • 给定:

    var list = [
      {
          "name": "花",
          "index": 10,
          "len": 4,
          "left": 150,
          "bottom": 108
      },
      {
          "name": "花",
          "index": 0,
          "len": 4,
          "left": 150,
          "bottom": 0
      },
      {
          "name": "花",
          "index": 8,
          "len": 4,
          "left": 950,
          "bottom": 0
      },
      {
          "name": "草",
          "index": 14,
          "len": 4,
          "left": 550,
          "bottom": 108
      },
      {
          "name": "草",
          "index": 15,
          "len": 4,
          "left": 650,
          "bottom": 108
      },
      {
          "name": "草",
          "index": 15,
          "len": 4,
          "left": 650,
          "bottom": 108
      }
    ];
    aa = '花花草草';
  • 预期结果:

    list = [
      {
          "name": "花",
          "index": 10,
          "len": 4,
          "left": 150,
          "bottom": 108
      },
      {
          "name": "",
          "index": 0,
          "len": 4,
          "left": 150,
          "bottom": 0
      },
      {
          "name": "",
          "index": 8,
          "len": 4,
          "left": 950,
          "bottom": 0
      },
      {
          "name": "",
          "index": 14,
          "len": 4,
          "left": 550,
          "bottom": 108
      },
      {
          "name": "",
          "index": 15,
          "len": 4,
          "left": 650,
          "bottom": 108
      },
      {
          "name": "草",
          "index": 15,
          "len": 4,
          "left": 650,
          "bottom": 108
      }
    ];

解决方案:

let start = list.map(i => i.name).join('').indexOf(aa);
if (start > -1) {
    let end = Math.min(start + aa.length, list.length);
    for (let index = start; index < end; index++) {
        list[index].name = '';
    }
}

解释:

  • 首先,将 list 中的 name 属性连接成一个字符串,使用 map 和 join。
  • 然后,使用 indexof 在连接的字符串中查找 aa 字符串,获取其起始位置 start。如果 start 为 -1,则说明 aa 没有在 list 中找到。
  • 接下来,计算 end,它是 start 加上 aa 长度,或 list 的长度(取较小值)。
  • 最后,使用一个循环遍历范围 [start, end) 内的元素,并将它们的 name 属性置空。

以上就是如何使用 JavaScript 将数组中与特定字符串匹配的元素的名称置空?的详细内容,更多请关注硕下网其它相关文章!