Имена из локального хранилища в массив для случайного выбора имени

Я пытаюсь сделать случайное средство выбора имени из массива имен, взятых из localstorage, который кажется, что ошибка не появляется, когда я проверяю ее с помощью Google Chrome.

Вот мой код:

function getUserData() {
    var Detail = localStorage.getItem("Detail");

    if (Detail == null) {
        Detail = []; // on new computer, create the local storage item } else { 
        Detail = JSON.parse(Detail); // convert from string to array
    }

    for (var i = 0; i < Detail.length; i++) { // loop through the array
        var row = document.getElementById("Detail").insertRow(-1);
        var cell1 = row.insertCell(0);
        var cell2 = row.insertCell(1);
        var cell3 = row.insertCell(2);
        var cell4 = row.insertCell(3);
        var cell5 = row.insertCell(4);
        cell1.innerHTML = Detail[i].name;
        cell2.innerHTML = Detail[i].admin;
        cell3.innerHTML = Detail[i].email;
        cell4.innerHTML = Detail[i].contact;
        cell5.innerHTML = Detail[i].country;
    }
}

function NamePicker() {
    var Detail = localStorage.getItem("Detail");

    if (Detail == null) {
        Detail = []; // on new computer, create the local storage item
    } else {
        Detail = JSON.parse(Detail); // convert from string to array
    }

    // copy names
    var nameArray = [];

    for (var i = 0; i < Detail.length; i++) { // loop through the array
        nameArray[i] = Detail[i].name;
    }

    for (var i = 0; i < Detail.length; i++) { // loop through the array
        // get a number from random num generator %numArray.length
        name = nameArray[num];

        while (nameArray.length < 11) {
            var randomnumber = Math.max(Math.ceil(Math.random() * 11))
            var found = false;
            for (var i = 0; i < nameArray.length; i++) {
                if (name[i] == randomnumber) {
                    found = true;
                    break
                }
            }
            if (!found) name[nameArray.length] = randomnumber;
        }

        // Display using modal
        alert(name);

        // remove using splice(num, 1);
        name.splice(num, 1);
        document.getElementById("Detail").innerHTML = name;
    }
}

проблема в том, что кажется, что num не удаляет имя из списка, и функция оповещения не появляется... я действительно ценю помощь, спасибо заранее...

1 ответ

Я нашел пару проблем во второй функции; вы используете локальную переменную i в трех для циклов, и я думаю, что в одном из них вы хотели использовать num. Кроме того, я изменил Detail.length на nameArray.length во втором цикле for, поскольку вы проходите через nameArray. Я также изменяю третий цикл for, чтобы использовать z вместо i.

function NamePicker() {
var Detail = localStorage.getItem("Detail");

if (Detail == null) {
    Detail = []; // on new computer, create the local storage item
} else {
    Detail = JSON.parse(Detail); // convert from string to array
}

// copy names
var nameArray = [];

for (var i = 0; i < Detail.length; i++) { // loop through the array
    nameArray[i] = Detail[i].name;
}

for (var num = 0; num < nameArray.length; num++) { // loop through the array
    // get a number from random num generator %numArray.length
    name = nameArray[num];

    while (nameArray.length < 11) {
        var randomnumber = Math.max(Math.ceil(Math.random() * 11))
        var found = false;
        for (var z = 0; z < nameArray.length; z++) {
            if (name[z] == randomnumber) {
                found = true;
                break
            }
        }
        if (!found) name[nameArray.length] = randomnumber;
    }

    // Display using modal
    alert(name);

    // remove using splice(num, 1);
    name.splice(num, 1);
    document.getElementById("Detail").innerHTML = name;
}
}

Надеюсь, это поможет!

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