У меня есть массив строк, и я хочу проверить, одинаковы ли первые char
в каждой строке. И если это так, удалите этот character
из каждой строки и верните новый массив.
Я делаю это так:
let labels = [
"- Knowledge",
"- Propositional Logic",
"- Inference",
"- Knowledge Engineering",
"- Inference Rules",
"- Resolution",
"- First-Order Logic"
]
let theChar;
let same = true;
for (let index=0; index<labels.length; ++index){
if (index === 0){
theChar = labels[index].charAt(0);
console.log(theChar);
}else{
// check if the current label's charAt(0) is the same as theChar
if(labels[index].charAt(0) != theChar) {
same = false;
break;
}
}
}
console.log(`SAME: ${same}`)
if(same){
// remove that element..
labels = labels.map(ele => ele.substr(1,ele.length).trim());
}
console.log(labels)
Еще один способ, о котором я подумал, - это создать новый массив строк с удалением первого символа из каждой строки, пока я проверяю условие same
ness. И если l oop ломается (это означает, что первый символ не одинаков во всех строках), поэтому я сохраняю исходный массив. Если l oop не сломается, оставьте новый массив. Таким образом, мне не придется дважды обходить массив. (но в этом случае я буду выполнять строковые операции с каждым элементом, пока не выйду из l oop (с помощью оператора break
или когда все элементы будут выполнены))
Есть ли другие лучший способ сделать это? Или какой из двух подходов лучше, если в массиве много строк?