Ich muss die Teilstrings innerhalb von Arrays finden. Wenn ich ein Array habe: ["abc", "abcd", "abcde", "xyz"]
, sollte die Methode mir die Array-Mitglieder zurückgeben: "abc", "abcd", "abcde"
wie jeder ist ein Teilstring oder ein Superstring des anderen, aber es sollte "xyz" auszuschließen. Was ist die bestmögliche Methode in Javascript?Finden von Substrings innerhalb von Arrays - Javascript
Antwort
Verwenden Array#filter
var arr = ["abc", "abcd", "abcde", "xyz"];
console.log(arr.filter(function(el) {
return el.indexOf('abc') > -1;
}));
Edit: Verwenden Array#some
wenn Sie Filter machen wollen anhand von einige Werte im Array in Bezug auf aktuelle Element!
var arr = ["abc", "abcd", "abcde", "xyz"];
console.log(arr.filter(function(el, index) {
return arr.some(function(e, i) {
if (i !== index) {
return e.indexOf(el) > -1 || el.indexOf(e) > -1;
}
return false;
})
}));
Dies wird nicht erwartet, ich muss jedes Element dynamisch mit jedem anderen Element vergleichen und sehen, welche alle Teilstrings untereinander haben, die Lösung, die Sie gaben, findet einen vorgegebenen Text innerhalb jedes Array-Elements –
@ShyamSundarR Überprüfen Sie die Bearbeitung .. – Rayon
Danke, das war das, was erwartet wurde, aber trotzdem den bereits berechneten Wert für die zukünftigen Checks zu verwenden, indem man sie speichert, würde das zur Verbesserung der Laufzeit beitragen? –
Sie können einfach zwei verschachtelte Schleifen verwenden, aber die Komplexität ist O (n^2)
function find_substrings(arr) {
var res = [];
for (var i=0; i<arr.length; i++) {
for (var j=0; j<arr.length; j++) {
if (i !== j && (arr[i].indexOf(arr[j]) > -1 || arr[j].indexOf(arr[i]) > -1)) {
res.push(arr[i]);
break;
}
}
}
return res;
}
var arr = ["abc", "abcd", "abcde", "xyz"];
console.log(find_substrings(arr));
keine andere Verbesserung möglich ist ?? –
Sie können die editierte Antwort über xD betrachten. Eigentlich würde es genauso funktionieren wie meine Antwort –
Sie einige optimierte Loops verwenden könnte mit Abkürzung und ein Objekt für die Gegenstände.
var data = ["abc", "abcd", "42", "abcde", "422", "xyz", "q", "1q"],
result = function (array) {
var i, j,
r = {};
for (i = 0; i < array.length - 1; i++) {
if (r[array[i]]) {
continue;
}
for (j = i + 1; j < array.length; j++) {
if (r[array[j]]) {
continue;
}
if (array[i].indexOf(array[j]) !== -1 || array[j].indexOf(array[i]) !== -1) {
r[array[i]] = true;
r[array[j]] = true;
}
}
}
return array.filter(function (a) { return r[a]; });
}(data);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
- 1. Lage von Substrings innerhalb von Strings und deren extentions
- 2. finden Substrings in Python
- 3. Kombinieren von Streams von Substrings
- 4. javascript: wie doppelte Arrays innerhalb Array von Arrays
- 5. Einen Teilstring innerhalb eines PHP-Arrays finden?
- 6. Erstellen von Array innerhalb eines Arrays in Javascript
- 7. Javascript indexOf für ein Array von Arrays nicht Array finden
- 8. JavaScript sync zwei Arrays (von Objekten)/Delta finden
- 9. JAVASCRIPT: Datenstruktur anstelle von Arrays
- 10. Werte innerhalb eines JavaScript-Arrays abrufen
- 11. finden 'fragmentarisch' Subarray innerhalb eines Arrays
- 12. Elegante Möglichkeit, zusammenhängendes Subarray innerhalb eines Arrays in JavaScript zu finden?
- 13. Substitution Substrings von einem Schlüsselwert-Tabelle
- 14. Python Kreuzung mit Substrings
- 15. Durchschleifen Arrays innerhalb Arrays
- 16. JavaScript - Konvertieren von Arrays Karten
- 17. Paginieren Arrays Javascript von Klick
- 18. Array von Arrays in Javascript
- 19. Javascript - Reduzieren Array von Arrays
- 20. Arrays von Daten von PHP Javascript
- 21. Suchen und Return Matched Substrings von Array-Werte in PHP
- 22. Wie Schlüssel und Werte von Arrays innerhalb Mehrdimensionale Arrays in Javascript bekommen
- 23. Übergabe eines Arrays von EJS zu Javascript
- 24. Compute Kreuzung von zwei Arrays in JavaScript
- 25. Erhalte Eigenschaften von Objekten innerhalb eines Arrays
- 26. LBound von Arrays innerhalb der Variante
- 27. Javascript: build html Tabelle von 2 Arrays
- 28. Finden Sie Artikel in Array von Arrays
- 29. Entfernen Schlüssel und Wert von assoziativen Arrays innerhalb des Arrays
- 30. Matlab. Speichern von 2D-Arrays innerhalb 3D-Arrays
was das Ergebnis dieser sein wird: [ 'ab', 'abc', 'bc', 'abbc', 'bb', 'abb', 'ac',‘ ababc ',' abbbc ',' bbc '] - die Desierd Logik ist nicht gut definiert – yossico
[' ab ',' abc ',' bc ',' abb ',' ababc ',' abbbc ',' bbc '], wie hier finden Sie keine völlig anderen String-Array-Elemente –
Warum nicht bb? es ist substring von anderen – yossico