#javascript
Вопрос:
У меня есть этот код:
var name1 = "John James"
var name2 = "Jake Connor Steve"
var name3 = "George"
var name4 = "Michael James Jackson"
Что мне нужно, чтобы проверить, содержит ли каждая строка более двух слов, если строка больше двух слов, то удалите средние слова и оставьте только первое и последнее слово, чтобы результат был таким:
var name1 = "John James"
var name2 = "Jake Steve"
var name3 = "George"
var name4 = "Michael Jackson"
Я не знаю, как определить размер слов внутри строки, как я могу это сделать ?
Есть какие-нибудь предложения?
Комментарии:
1. Разделите строку пробелами. Объедините первую и последнюю (если таковые имеются) записи.
Ответ №1:
split
строка в массив. Если длина массива больше 2, удалите элемент в первом индексе с splice
помощью . Затем верните новую join
измененную строку.
function checkRemove(str) {
const arr = str.split(' ');
if (arr.length > 2) arr.splice(1, 1);
return arr.join(' ');
}
console.log(checkRemove('Jake Connor Steve'));
console.log(checkRemove('John James'));
console.log(checkRemove('George'));
console.log(checkRemove('Michael James Jackson'));
Ответ №2:
const name1 = "John James"
const name2 = "Jake Connor Steve"
const name3 = "George"
const name4 = "Michael James Jackson"
function midRemover(str) {
//First we turn the string into an array by using the .split() so we can find the middle number in the array.
const arr = str.split(" ");
//next we need to find the middle value from our string turned array and remove it
const middle = Math.floor(arr.length / 2);
// We check to make sure that we have more than 2 items in the array so we don't just remove whats there (if there's only one or less items),
//We just return those items.
if (arr.length > 2) {
// We use Splice to remove the middle index.
arr.splice(middle, 1)
//Then use .join() to turn our array back into a string
return arr.join(" ");
} else {
return arr.join(" ");
}
}
console.log(midRemover(name1));
console.log(midRemover(name2));
console.log(midRemover(name3));
console.log(midRemover(name4));
Ответ №3:
Несколько иной подход, использующий регулярное выражение для фильтрации пробелов и filter
исключения средних индексов.
- Разделите имена пробелами
- фильтр по индексу
- объединить массив с пробелом
const foo = str => str
.split(/s/ig)
.filter((a,b,c) => b == 0 || b === c.length - 1)
.join(' ');
// test
console.log([
"John James",
"Jake Connor Steve",
"George",
"Michael James Jackson"
].map(foo));
Ответ №4:
Пожалуйста, используйте этот код. Вы можете использовать функцию «разделить», чтобы разделить имена. И если количество имен больше 2, вы получите имя и фамилию.
const names = [
"John James",
"Jake Connor Steve",
"George",
"Michael James Jackson",
];
const result = names.map(name => {
const arr = name.split(' ');
return arr.length > 2 ? arr[0] ' ' arr[arr.length - 1] : name;
});
console.log(result);
Комментарии:
1. можете ли вы просто не дать ответ? он должен учиться…
2. Спасибо!! это сработало идеально