为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

莫回无 2019-10-24 15:15:36
例如,我有: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'以获取属性标记的值。我该如何解决这个问题?
查看完整描述

3 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

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


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()相同的结构


查看完整回答
反对 回复 2019-10-24
?
MYYA

TA贡献1868条经验 获得超4个赞

由于排序部分已经回答。我将提出另一种优雅的方法来获取数组中属性的indexOf


您的示例是:


var Data = [

    {id_list:1, name:'Nick',token:'312312'},

    {id_list:2,name:'John',token:'123123'}

]

你可以做:


var index = Data.map(function(e) { return e.name; }).indexOf('Nick');

Array.prototype.map在IE7或IE8上不可用。ES5兼容性


这就是ES6和arrow语法,它更简单:


const index = Data.map(e => e.name).indexOf('Nick');


查看完整回答
反对 回复 2019-10-24
  • 3 回答
  • 0 关注
  • 993 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信