包含对象逻辑的Javascript数组失败。出什么事了?

包含对象逻辑的Javascript数组失败。出什么事了?,javascript,jquery,arrays,contains,underscore.js,Javascript,Jquery,Arrays,Contains,Underscore.js,我有两个数组,其中一个数组保存另一个数组的所有唯一值。第二个数组保存在另一个数组中找到的重复值的唯一值 下面的代码循环第一个数组,检查该数组索引中的值是否与复制项的第二个数组索引中的值匹配。如果这样做,它将在项目文本前添加一个箭头 这似乎工作不正常,它正在打印第一个数组,而不是检查复制的项目 var aos = ["a","a","b","c","d","e","f","f","f","g","g","g","h","h","h"]; // Credits to the guy who hel

我有两个数组,其中一个数组保存另一个数组的所有唯一值。第二个数组保存在另一个数组中找到的重复值的唯一值

下面的代码循环第一个数组,检查该数组索引中的值是否与复制项的第二个数组索引中的值匹配。如果这样做,它将在项目文本前添加一个箭头

这似乎工作不正常,它正在打印第一个数组,而不是检查复制的项目

var aos = ["a","a","b","c","d","e","f","f","f","g","g","g","h","h","h"];

// Credits to the guy who helped me with this, internet w00t!
var duplicates = _.select(aos, function(val) {
    var True = _.after(2, function() {
        return true;
    });
    return _.any(aos, function(elem) {
        return elem === val ? True() : false;    
    });
});

aos.sort();
aos = _.unique(aos);

var dennis =  _.unique(duplicates);
    if ($.inArray(aos[i], dennis)) {
        console.log("CONTAINS!", dennis, aos[i]);
        $("tr[number='" + i + "']").find("td:first-child").prepend("<img src='images/arrow.jpg' style='padding-right: 5px;'/>");
    } else
        console.log("no!");
输出应该是什么:

CONTAINS!
no!
no!
no!
no!
CONTAINS!
CONTAINS!
CONTAINS!
我可能做错了什么?如果需要更多信息或澄清,请让我知道

if ($.inArray(aos[i], dennis)) {
“$.inArray()”的返回值不是布尔值。这是一个索引。因此,要得到一个布尔值“它在数组中吗?”的答案,可以将其与-1进行比较,当找不到该项时返回-1

if ($.inArray(aos[i], dennis) > -1) {
你也可以只写
~$.inArray(aos[i],dennis)
来得到一个布尔值,但我不敢推荐,因为有些成年人可能会对我大喊大叫


现在,也就是说,你发布的代码中缺少了一些非常重要的东西:“我”是什么?

砰的一声-如果我能给
~
另一个+1,我会的。我是这段代码所包含的for循环的索引。谢谢你的帮助解释!既然您已经解释过它不返回布尔值,而是返回一个索引,那么这是有道理的。现在唯一剩下的问题是找出为什么在第三个f和第二个g上放一个箭头:P@Dennis祝你好运,谢谢你接受了答案。我不确定为什么代码没有达到您想要的效果,但我也不确定我是否完全理解您想要的。如果你陷入困境,你总是可以提出另一个问题。
if ($.inArray(aos[i], dennis) > -1) {