javascript - 检索数组内的元素编号

标签 javascript

我有一个包含如下数据的数组。

var objects = [
 {
   "rowid": 1,
   "Hostname": "11 Com"
},
 {
   "rowid": 2,
   "Hostname": "11 UMi"
},
 {
   "rowid": 3,
   "Hostname": "14 And"
   },
 {
   "rowid": 5,
   "Hostname": "23 A"
   }];

我正在尝试获取每个对象的元素编号的位置。每个对象都包含自己的“行 ID”,这基本上就是我当前使用此函数检索其元素位置的方法:

 function findCorrespondingNumber(hostname) { 
        function search(am, im) { 
        if (am.Hostname === hostname) { 
            index = im; return true; } 
        } var index;
     if (objects.some(search)) { 
        return objects[index]['rowid']; 
    } 
}
var correspNumb = findCorrespondingNumber(name) - 1;
var fiff = objects[correspNumb]["Hostname"];

数据集的问题是数字有时会跳过序列。 rowid 3 后面跟着 5,而不是应有的 4。这会导致进一步的代码出现问题,因此我需要它,以便将 rowid 5 的对象读取为第四个对象。我该如何编写该代码?

最佳答案

我认为您正在寻找 Array#findIndex ,这是 ES2015 中添加的。它接受一个谓词函数并返回该谓词返回真值的第一个条目的索引(如果从未返回,则返回 -1):

var index = objects.findIndex(function(entry) {
    return entry.Hostname == hostname;
});

这将为您提供基于 0 的索引(因此,在您的示例中为 0 - 3)。如果您想要基于 1 的索引(您的示例为 1 - 4;您确实说过“对于第三个条目返回 3”),请在结果中添加 1。

还有密切相关的 Array#find ,它执行相同的操作,但返回实际条目:

var entry = objects.find(function(entry) {
    return entry.Hostname == hostname;
});

两者都是新的,但都可以填充/填充。

关于javascript - 检索数组内的元素编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41124220/

相关文章:

javascript - 第 3 方 React 模块(效应器)的 Webpack 错误

javascript - 自动登录时如何确保按钮获得正确的 CSS/CTA 选择器?

javascript - 如何将一个javascript文件包含到另一个javascript文件中?

javascript - 传递获取参数吗?

javascript - 带嵌套幻灯片的 Jssor slider + 垂直缩略图

JavaScript 验证 :

javascript - npm 不安装下划线包

javascript - 数据分钟检查欧芹不起作用

javascript - 在javascript中获取zip文件的文件名

javascript - jquery bootstrap selectpicker 根据先前的列表选择刷新列表