使用Javascript或JQuery从对象列表中获取所有值

Get all values from a list of objects using Javascript or JQuery

本文关键字:获取 列表 对象 Javascript JQuery 使用      更新时间:2023-09-26

我有一个对象列表:

[Object { name="abc", id=12, addr="random addr 0"}, Object { name="def", id=76, addr="random addr 1"}]

我想要的:

name -> id的键值对

Object { abc=12, def=76}

我所拥有的:

for (var i in list){
    res[list[i].name]=list[i].id;
}

我的问题:

有更好的方法吗?

对于数组上的大多数索引操作,有更好的替代方法(例如使用map(), reduce()等表达式)。在这种情况下,我建议使用reduce():

var s = [{ name:"abc", id:12, addr:"random addr 0"}, 
         { name:"def", id:76, addr:"random addr 1"}]; 
s.reduce( function( acc, next) { 
   acc[next.name] = next.id; 
   return acc; 
   }, {} )

Object {abc: 12, def: 76}

遍历所有列表项,并为目标对象添加一个属性。

var res = {};
list.forEach(function(item){
    return res[item.name] = item.id;
});

或用于一般数组,如对象

var res = {};
Arrays.prototype.forEach.call(list, function(item){
    return res[item.name] = item.id;
});

或者在老派迭代中

var res = {};
for(var i = 0; i < list.length; i++){
    return res[list[i].name] = list[i].id;
});

另一个变体,使用JQuery map函数($.map)

var list = [{ 'name':"abc", 'id':12, 'addr':"random addr 0"},
            { 'name':"def", 'id':76, 'addr':"random addr 1"}];
var result = {};
$.map(list,function (i){ result[i.name] = i.id})
console.log(result);
输出:

Object {abc: 12, def: 76}

可以使用jquery .map

我做了如下的事

var PAIDs = SU.Details.Actions.map(function (pa) { return pa.id; });

给了我一个对象数组id为