从地图中减去特定的最后一个单词

Subtracting specific last word from map

本文关键字:最后一个 单词 地图      更新时间:2023-09-26

我使用下面的代码循环遍历公司名称并创建缩写

dataset.nodes.forEach(d => {d.name = d.fullName.split(' ').map(w => w[0]).join('')});

劳埃德银行集团PLC将是一个公司的例子,我想检查最后一个单词是否为PLC/PLC/p.l.c。并在创建缩写之前删除它,因为现在该公司的缩写是LBGP,而我希望它是LBG

数据:

    var dataset = {"nodes":[{"fullName":"Anglo American plc"},{"fullName":"Whitbread PLC"}],"edges":[{"source":0,"target":29,"officers":["MEDORI, Rene"]},{"source":0,"target":30,"officers":["GROTE, Byron Elmer"]},{"source":0,"target":31,"officers":["GROTE, Byron Elmer"]},{"source":1,"target":13,"officers":["BASON, John George"]},{"source":1,"target":18,"officers":["HAUSER, Wolfhart Gunnar, Dr"]},{"source":1,"target":27,"officers":["SINCLAIR, Charles James Francis"]},{"source":2,"target":14,"officers":["COURT, Annette Elizabeth"]},{"source":3,"target":11,"officers":["GREEN, Andrew James"]},{"source":3,"target":12,"officers":["PUSEY, Stephen Charles"]},{"source":3,"target":15,"officers":["KENNEDY, Christopher John"]},{"source":3,"target":24,"officers":["CHAMBERS, Stuart John"]},{"source":3,"target":31,"officers":["CHAMBERS, Stuart John"]},{"source":3,"target":32,"officers":["KENNEDY, Christopher John"]},{"source":4,"target":8,"officers":["BARKER, Glyn"]},{"source":4,"target":12,"officers":["WHEWAY, Jonathan Scott"]}]};

split之后,根据regexp测试最后一个元素,然后继续映射:

omits = /p'.?l'.?c'.?/i;
dataset.nodes.forEach(d => {
  const parts = d.fullName.split(' ');
  if (omits.test(parts[parts.length-1])) parts.pop();
  d.name = parts . map(w => w[0]).join('')});
});

理论上,您可以使用一两个regexp来完成此操作:

data.nodes.forEach(d =>
  d.name = d.name . replace(omits, '') . match(/'b'w/g) . join('');
);

注意这里省略了{},因为它们在技术上不是必需的。