2016-06-26 5 views
0

Subtrahierend habe ich Firmennamen, die ich Schleife durch und erstellen unterspezifische letzte Wort von Karte

den Code und fügen Sie
dataset.nodes.forEach(d => {d.name = d.fullName.split(' ').map(w => w[0]).join('')}); 

Lloyds Banking Group PLC ein Beispiel für ein Unternehmen sein würde, und ich würde, wenn das überprüfen möchten Letztes Wort ist PLC/plc/plc und löschen Sie es vor Abkürzung erstellen, da jetzt die Abkürzung dieses Unternehmens LBGP sein würde, und ich möchte es LBG sein

Daten:

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"]}]}; 
+1

zeigen einige Beispiele, Daten? –

+0

Sieht aus wie ein Job für ein _RegExp_, '/\W(plc|p\.l\.c\.)/i.test('Lloyds PLC '); // true', '/\W(plc|p\.l\.c\.)/i.test('Lloyds '); // false' –

+0

@ZohaibIjaz ive hinzugefügt Beispiel ..., Paul S. Ich verstehe, dass es ein Job für Regex ist, aber ich bin mir nicht sicher, wie man es zu dem Code, den ich Ihnen gezeigt habe – Higeath

Antwort

1

Nach dem split, testen Sie das letzte Element gegen einen regulären Ausdruck und dann weiter mit der Karte:

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

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('')}); 
}); 

Sie in der Theorie dies mit einem regexp oder zwei tun könnten

Hinweis Ich habe die {} hier weggelassen, da sie technisch nicht notwendig sind.

+0

Die erste Methode funktioniert aber es würde plc entfernen, selbst wenn es ein Teil des Wortes wäre? Ich möchte nur plc entfernen, wenn es ein Wort für sich und am Ende ist. – Higeath

Verwandte Themen