javascript - 列表列表的 Array.indexOf 不起作用

标签 javascript indexof

我有一个来自 ajax 响应 中服务器的列表,其结构如下:

var mapping = [     //response.mapping
    ["userOne", 1],
    ["userTwo", 2],
    ["userthree", 3],
    ["userfour", 4],

    ["personOne", 1],
    ["personTwo", 2],
    ["personOne", 3],
];

由于列表将永远保持不变,因此任何时候都只有 7 个元素。我想要它的任何元素的索引来更新一些 DOM 元素。

// Gives me any of list element which is random elm of the list `mapping`.
var captured_list_elm =  process_mapping_list();     
var status = mapping.indexOf(captured_list_elm);// getting always -1

在这里,我的状态始终为 -1

  • 可能是什么原因?
  • 为什么indexOf无法计算其索引?
  • 如何找到它,仅通过循环列表获取索引?

创建了 jsFiddle

注意 - 实际上它应该是一个 json,但我们团队中的某个人将其编写为列表列表。我现在无法更新它,因为代码正在生产中。

最佳答案

Array.indexOf()使用严格相等 (===) 来查找元素。 mapping 的元素是数组,两个恰好具有相同元素的不同数组不是 ===。我怀疑 process_mapping_list() 返回的数组看起来类似于 mapping 的元素之一,但不是元素本身(就像您的 fiddle 确实如此)。

您可能需要编写自己的使用自定义相等性测试的查找函数。对于这样的测试,请查看 this thread 。根据您的目标环境,您也许可以使用 findIndex()而不是 indexOf()。该函数允许您提供自己的测试函数。

关于javascript - 列表列表的 Array.indexOf 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30520401/

相关文章:

JavaScript indexOf() - 如何获取特定索引

java - 在数组列表中查找索引总是出现在-1

javascript - Bootstrap日期选择器: Start picking date from year

javascript - 在内联图标和按钮中显示 ckeditor 工具栏

javascript - 声音管理器 2 : Stop a playing sound when playing another

javascript - 选择 DOM 元素上方的注释

javascript - "Uncaught TypeError: Cannot call method ' indexOf ' of undefined"选中jqgrid行时

c# - 二元搜索和indexof 哪个更快?

javascript - 如何使用 Angular 或javascript将所有对象键推送到数组中的单独数组?

javascript - 循环遍历对象数组中的每个属性