Как удалить слово из функции .split? (Javascript)

Я написал программу, которая извлекает текст с заданной веб-страницы.

Я использовал .split, чтобы поместить слова в массив. Я хотел бы удалить любое слово, которое не начинается с буквы, например. 5X не будет классифицироваться как слово, но X5 будет.

Мой код не работает.

function getWords(node) {
    var text = node.innerText;
    output.textContent = inputValidation(text)
}
function inputValidation(text) {
    var wordData = text.split();
    for (i in wordData) {
        if (isLetter(i[0] == False)) {
            wordData.splice(i, 1);
        }

    } return wordData
}

function isLetter(str) {
    return str.length === 1 && str.match(/[a-z]/i);
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
140
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Измените свой isLetter на

function isLetter(str) {
if (str.match(/^\d/)) {
   return true;
}
return false;
}
Ответ принят как подходящий

Вы можете легко упаковать это в фильтр, например:

let output = document.querySelector("#output");
getWords(document.querySelector("p"));

function getWords(node) {
  let text = node.innerText;
  output.textContent = text.split(" ").filter(word => word[0].toLowerCase().match(/[a-z]{1}/));
}
<p>Hello world! Click here Goodbye world! X7 9x</p>

<p id = "output"></p>

Привет спасибо за вашу помощь. Используя ваш код, он переходит от «Hello world! Click here Goodbye world! X7 9x» к «Hello, world!, Here, world!, X7», так что по какой-то причине он пропускает несколько слов. Он успешно пропускает неправильное слово.

Brndn 22.08.2018 14:40

Как вы можете видеть из только что сделанного мной редактирования, он также работает с ними.

Luca Kiebel 22.08.2018 14:41

спасибо, это должно быть ошибка в моем коде. Я использую текстовые узлы для извлечения текста.

Brndn 22.08.2018 14:43

Ох, хорошо. Я предположил, что node относится к узлам DOM, и что вы использовали элементы HTML.

Luca Kiebel 22.08.2018 14:45

В конце концов я заставил его работать, удалив лишние пробелы из текста с отступом с помощью text.split (/ \ s + / g)

Brndn 22.08.2018 16:22

Ваш код кажется неправильным, поскольку вы передаете значение boolean в функции isLetter как isLetter(i[0] == False), что снова неверно, поскольку F должен быть в нижнем регистре, то есть false. В вашем коде много ошибок, но вы можете использовать parseInt() и isNaN(), чтобы убедиться, что все слово начинается с символа или цифры.

//when you have a letter as a first character
var word = 'X5';
var isLetter = isNaN(parseInt(word));
console.info(isLetter);

//when you dont have a letter as a first character
word = '5ABC';
isLetter = isNaN(parseInt(word));
console.info(isLetter);

Я думаю, проблема в этой строке кода

    if (isLetter(i[0] == False)) {

должно быть

    if (isLetter(i[0]) == False) {

или лучше

    if (!isLetter(i[0])) {

Я внес поправки в это, но не исправил. Спасибо.

Brndn 22.08.2018 14:50

Пример:

var text = "abc def 10hij kl 3GH";

var splitedtext=text.split(" ");
var dummyarray=[];

for(var i=0;i<splitedtext.length;i++){
    var thistext=parseInt(splitedtext[i]);
  if ( thistext.toString() == "NaN" ){
        dummyarray.push(splitedtext[i]);
  }
}

$("body").html(dummyarray.join(" "));

демонстрация jsfiddle: http://jsfiddle.net/geogeorge/hztdxv4w/2/

Другие вопросы по теме