使用拼接时,项目无法从数组中正确删除

时间:2014-01-27 05:15:50

标签: javascript arrays splice

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);

2 个答案:

答案 0 :(得分:2)

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 :(得分:0)

if(select === 1) 总是假的因为select会以字符串形式返回.... 而不是选择=== 1使用select ===“1”或选择== 1