Javascript indexOf方法无法处理对象中的整数

Javascript indexOf方法无法处理对象中的整数,javascript,Javascript,我做了一把小提琴: 我试图让代码达到这样一个程度,它从来不会同时显示相同的两个项目,或者当单击一个项目时,它从来不会从数组中提取相同的项目,只是看起来在逻辑上有点困难,indexOf方法的行为很奇怪 var justAdded = []; justAdded['first'] = 0; justAdded['second'] = 1; newHtml = returnRandom().split('|'); justAdded[e.id] = parseInt(newHtml[0], 10)

我做了一把小提琴:

我试图让代码达到这样一个程度,它从来不会同时显示相同的两个项目,或者当单击一个项目时,它从来不会从数组中提取相同的项目,只是看起来在逻辑上有点困难,indexOf方法的行为很奇怪

var justAdded = [];
justAdded['first'] = 0;
justAdded['second'] = 1;

newHtml = returnRandom().split('|');

justAdded[e.id] = parseInt(newHtml[0], 10);

    if(justAdded.indexOf(parseInt(newHtml[0], 10)) == -1){
        e.style.opacity = 0;
        e.innerHTML = newHtml[1];
        e.style.opacity = 1;
        e.setAttribute('data-id', newHtml[0]);
    } else {
        uniq(clickedEl);
    }

var returnRandom = function(){
    return options[Math.floor(Math.random() * options.length)]
};
e、 id将等于“first”或“second”。returnRandom将从选项数组中获取一个随机值:

var options = [
    '0|Flash',
    '1|Internet Explorer',
    '2|Java',
    '3|!important'
];
您似乎正在向数组添加非数字属性

indexOf方法用于处理和返回数值属性

此外

processAnswer处理程序将元素的ID传递给addHtml。。。比如第一,第二

addHtml使用该ID字符串获取存储在具有相同名称的变量中的相同元素,然后将该元素传递给uniq

uniq向justAdded数组添加一个属性,键是元素的ID

在传递的元素和它们的ID之间不断切换,并在下一个函数中使用一个元素来获取另一个元素。所有这一切都意味着你的代码看起来非常混乱,我认为你只需要从头开始重新思考你的代码

还有,这到底是怎么回事

var options = [
    '0|Flash',
    '1|Internet Explorer',
    '2|Java',
    '3|!important'
];
为什么要将索引硬编码到数组中的字符串中?数组是有序列表。他们已经处理好了指数

var options = [
    'Flash',                // 0
    'Internet Explorer',    // 1
    'Java',                 // 2
    '!important'            // 3
];

把你的代码贴在这里怎么样。在问了400多个问题和回答了200多个问题之后,我想你会知道该怎么做。@amnotiam这一切都很相关,但这里有几点要点:SJS内置函数的行为并不奇怪,只有用户函数和PHP库函数会这样做。你使用的是数组作为对象。欧欧欧