nodejs — как удалить часть строки после разделителя

#javascript #node.js #webtorrent #inquirerjs

Вопрос:

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

 for (let [index, torrent] of results.entries()) {
    if (torrent.seeds > 0 amp;amp; torrent.peers > 0) {
        filesList.push(`${torrent.title} s:${torrent.seeds} p:${torrent.peers}`);
        filesDetails.push(torrent);
    } else {
        results.splice(index, 1);
    }
}
 

Как вы можете видеть, я добавляю s:value и p:value после имени файла, чтобы информировать пользователя о семенах и одноранговых файлах файла. Когда пользователь выбирает файл из списка, я ищу в массиве объектов, чтобы найти файл и вернуть его обратно. Если я не добавлю s:value и p:value в имя файла, все будет работать так, как ожидалось, но поскольку мне нужно предоставить эту информацию, как я могу удалить их из имени файла перед циклическим циклом массива?

Это код, который я использую в данный момент, чтобы найти нужный файл в массиве объектов

 const selectedTorrent = [];
for (let f of filesDetails) {
    if (f.title === availableTorrents.selected) {
        selectedTorrent.push(f);
    }
}
 

Комментарии:

1. почему filesList.push({title: torrent.title, s: torrent.seeds, p: torrent.peers} бы и нет ? похоже на анти-шаблон для использования строки, если вам понадобятся отдельные значения позже где-то в другом месте

2. @LawrenceCherone, потому что я использую fileList для выбора вопросов inquirerjs. Я не знаю, возможно ли это

Ответ №1:

Не очень понятно, как «Список файлов» используется во втором фрагменте, но, чтобы ответить на вопрос в заголовке, вы можете удалить часть, начинающуюся с «s:», используя комбинацию встроенных функций строки indexOf и substring :

 let title = `Torrent title s:${torrent.seeds} p:${torrent.peers}`;

let strippedTitle = title.substring(0, title.indexOf(" s:")); // returns "Torrent title"
 

Индекс: Документы MDN

подстрока: Документы MDN

Комментарии:

1. filesList предоставляется для запроса, чтобы предоставить пользователю выбор. Когда пользователь выбирает возможный вариант, он добавляется к availableTorrents.selected тому, который используется во втором фрагменте для сравнения имен файлов! Ваше решение удалит также p: ?

2. Ладно, я так и думал. Да, это решение также удалит «p:». Он принимает подстроку от символа с индексом 0 (начало) до индекса строки » s:». Я обновлю ответ некоторыми документами о методах

3. Рад, что вы нашли это полезным! 🙂