使用Javascript或JQuery从对象列表中获取所有值
Get all values from a list of objects using Javascript or JQuery
我有一个对象列表:
[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为
相关文章:
- 如何在jquery中获取列表项的最顶端父项的文本
- 根据列表元素的值使用JQuery获取列表元素
- 正在获取列表项位置()
- 如何在委托中获取列表项中元素的内部HTML
- 用javascript从mysql中获取列表变量
- 在 jQuery 的自动完成中获取列表项单击的名称
- Jquery - 如何获取列表项中的元素
- 在 django 中获取列表值
- 在 Vista Gadget 中使用 Javascript 获取列表数据
- 使用 SPServices 从另一个域上的 SharePoint 获取列表项总数
- jQuery:如何获取列表元素的索引
- 获取列表项中当前 ID 的值
- 获取列表项的值并发布到 ajax
- 获取列表中的第一个 DOM 元素
- 获取列表项的文本内容
- 如何在javascript中获取列表中td的值
- $ionicLoading在从Ionic中的Firebase获取列表期间未显示
- Iscroll-Jquery-获取列表项的位置
- 从自动填充的JSON列表中获取列表选项值,并传递给JS函数
- 如何获取列表项'JSON加载的未排序列表中的s id