Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用接头时未从阵列中正确删除项目_Javascript_Arrays_Splice - Fatal编程技术网

Javascript 使用接头时未从阵列中正确删除项目

Javascript 使用接头时未从阵列中正确删除项目,javascript,arrays,splice,Javascript,Arrays,Splice,不熟悉Javascript,并尝试制作一个小东西,让我决定看哪部电影。我做了一些电影的测试清单。然后,我从列表中一次放映两部电影,每次我都要否决其中一部电影。这应该一直持续到只剩下一部电影,这时一个弹出窗口会告诉我要看哪部电影 问题是,它不能正常工作。无论我做什么,它似乎都不会删除列表中的最后一项,有时电影根本不会删除。这是我正在使用的代码。有人能帮我指出正确的方向吗 var options = [ "ET", "Schindler’s List", "Up", "What’s Eating G

不熟悉Javascript,并尝试制作一个小东西,让我决定看哪部电影。我做了一些电影的测试清单。然后,我从列表中一次放映两部电影,每次我都要否决其中一部电影。这应该一直持续到只剩下一部电影,这时一个弹出窗口会告诉我要看哪部电影

问题是,它不能正常工作。无论我做什么,它似乎都不会删除列表中的最后一项,有时电影根本不会删除。这是我正在使用的代码。有人能帮我指出正确的方向吗

var options = [
"ET",
"Schindler’s List",
"Up",
"What’s Eating Gilbert Grape",
];

var process = function() {
    while (options.length > 1) {
    for (i = options.length-1; i >= 1; i--) {
        var select = prompt("VETO one of the following: 1. " + options[i] + " 2. " + options[i-1]);
        if (select === 1) {
            options.splice(i, 1);
        }
        else {
            options.splice(i-1, 1);
        }
    }
}
};
process();
alert(options);

select变量以字符串形式返回。因此,

select === 1 // always false
select === '1' // works as expected
修改来源:

var options = [
"ET",
"Schindler’s List",
"Up",
"What’s Eating Gilbert Grape",
];

var process = function() {
    while (options.length > 1) {
        for (var i = options.length-1; i >= 1; i--) {
            var select = prompt("VETO one of the following: 1. " + options[i] + " 2. " + options[i-1]);
            if (select === '1') { // changed
                options.splice(i, 1);
            }
            else {
                options.splice(i-1, 1);
            }
        }
    }
};
process();
alert(options);
另外,使用
var
声明变量-始终。

如果(选择===1) 始终为false,因为select将作为字符串返回。。。。
通常,使用select===“1”或select==1来代替select===1,在数组中迭代时修改数组是个坏主意。您想如何选择不同的电影?为什么不使用随机的呢?所以ncabral的答案解决了我的问题,但如果有更好的方法,我洗耳恭听。我还是个初学者。基本上,我希望列表中的所有电影都呈现给用户,一次两部。然后,用户将否决这两部电影中的一部,并获得另外两部电影等,直到只剩下一部电影。这就是我和我女朋友选择我们要看的电影的基本方式,所以我只是想把它自动化一些。在理想情况下,它会随机比较电影,但我不知道怎么做,所以我做了阵列。没问题。用javascript取悦你女朋友很酷:)非常感谢!真不敢相信我犯了这么愚蠢的错误。我也很感激你的提示:不客气。“严格使用”总是好的并使用类似JSHint的内容来避免潜在的问题。