Как использовать цикл for и соединение, чтобы удалить слово, а затем проверить массив для конкретного слова - PullRequest
0 голосов
/ 16 ноября 2018

Я хочу создать функцию, которая ищет определенное имя (Inger) в массиве и удаляет это имя.Затем я хочу, чтобы функция сообщила, что имя не существует в массиве.

    var femaleName = ["Anne","Inger","Kari","Marit","Ingrid"]

    function removeElement (aTable, aName) {

        for (var i = 0; i <= aTable.length - 1; i++) {
            if (aTable[1] === aName) {

                aTable.splice(i, 1)
                document.write(aTable); {break;}

            } else if (aTable[i] !== aName) {
                document.write(aName + " is not in the list");
            }
        }
    }

Я пытался решить это таким образом, но я не понял его правильно.Вывод должен быть примерно таким:

Anne, Kari, Marit, Ingrid
Victoria is not in the list

Ответы [ 4 ]

0 голосов
/ 17 ноября 2018

Следуя вашему описанию, попробуйте этот пример.Сначала он получает индекс в массиве искомого имени с помощью findIndex , затем удаляет его из массива с помощью splice и, наконец, печатает результат

const names = ['Anne', 'Inger', 'Kari', 'Marit', 'Ingrid'];

function notify(criteria) {
    const position = getPosition(criteria);
    const removed = removeName(position);
    
    console.log(names);
    console.log(`${removed} is not in the list`);
}

function getPosition(criteria) {
    return names.findIndex(name => name === criteria);
}

function removeName(position) {
    return names.splice(position, 1);
}

notify('Inger');
0 голосов
/ 16 ноября 2018

Вам нужно написать функции?Javascript имеет методы Array, чтобы сделать это для вас.

Array.prototype.filter ()

Метод filter () создает новый массив со всеми элементамикоторые проходят тест, реализованный предоставленной функцией.

includes ()

Метод includes () определяет, включает ли массив определенный элемент, возвращая true или false в зависимости от ситуации.

var femaleName = ["Anne", "Inger", "Kari", "Marit", "Ingrid"]

femaleName = femaleName.filter(name => name !== 'Inger')

console.log(femaleName);

console.log(femaleName.includes('Inger'));
0 голосов
/ 17 ноября 2018

Вы можете сделать это:

function removeElement(aTable, aName) {
    const index = aTable.indexOf(aName);
    if (index > -1) {
        aTable.splice(index, 1);
        document.write(aTable);
    } else {
        document.write(aName + " is not in the list");
    }
}

Или вы всегда можете использовать функционал Array.prototype.filter ().

0 голосов
/ 16 ноября 2018

Проблема в этой строке:

if (aTable[1] === aName) {

Это проверяет только второй индекс ("Inger"). Должно быть так:

if (aTable[i] === aName) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...