包含对象逻辑的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) {