一尘不染

如何在JavaScript中通过对象的属性获取索引?

javascript

例如,我有:

var Data = [
  { id_list: 1, name: 'Nick', token: '312312' },
  { id_list: 2, name: 'John', token: '123123' },
]

然后,例如,我要通过对该对象进行 排序/反转name。然后我想得到这样的东西:

var Data = [
  { id_list: 2, name: 'John', token: '123123' },
  { id_list: 1, name: 'Nick', token: '312312' },
]

现在,我想知道具有属性的对象的索引,name='John'以获取属性标记的值。

我该如何解决这个问题?


阅读 440

收藏
2020-05-01

共1个答案

一尘不染

正如其他答案所暗示的那样,遍历数组可能是最好的方法。但是我会把它放在它自己的函数中,并使它更抽象一些:

function findWithAttr(array, attr, value) {
    for(var i = 0; i < array.length; i += 1) {
        if(array[i][attr] === value) {
            return i;
        }
    }
    return -1;
}

var Data = [
    {id_list: 2, name: 'John', token: '123123'},
    {id_list: 1, name: 'Nick', token: '312312'}
];

这样,您不仅可以找到包含“ John”的一个,而且可以找到包含令牌“ 312312”的一个:

findWithAttr(Data, 'name', 'John'); // returns 0
findWithAttr(Data, 'token', '312312'); // returns 1
findWithAttr(Data, 'id_list', '10'); // returns -1

编辑:
未找到时更新了函数以返回-1,因此它遵循与Array.prototype.indexOf()相同的结构

2020-05-01