如何从数组中获取单个字段
Posted
技术标签:
【中文标题】如何从数组中获取单个字段【英文标题】:how to get a single field from array 【发布时间】:2017-11-26 14:16:58 【问题描述】:我正在使用如下数组
var types = [id:1, type:'Type 2', id:2, type:'Type 5', id:3, type:'Type 1', id:4, type:'Type 2'];
我想根据类型过滤值并将其放入一维数组中。我尝试使用过滤器等,但得到过滤后的二维数组。
$filter('filter')(types, type: 'Type 2' )
结果应该只是没有类型的 id 数组:
[id:1, id:4]
【问题讨论】:
【参考方案1】:在过滤数组后尝试Array#map
var types = [id:1, type:'Type 2', id:2, type:'Type 5', id:3, type:'Type 1', id:4, type:'Type 2'];
console.log(types.filter(a=> a.type =='Type 2' ).map(a=> (id : a.id)))
【讨论】:
【参考方案2】:遵循其命名约定filter()
不会操纵对象;它选择一个新的子集数组。
你可以使用Array.map()
$filter('filter')(types, type: 'Type 2' ).map(function(x)
return id : x.id ;
)
工作小提琴 :http://jsfiddle.net/ADukg/12074/
【讨论】:
【参考方案3】:您可以使用filter
和map
的组合。或者,您可以使用这个名为reduce
的神奇函数,它可以单独使用filter
和map
您的数组。像这样:
var types = [id:1, type:'Type 2', id:2, type:'Type 5', id:3, type:'Type 1', id:4, type:'Type 2'];
var res = types.reduce(function(arr, obj)
if(obj.type === 'Type 2')
arr.push(
id: obj.id
)
return arr
, [])
console.log(res)
【讨论】:
【参考方案4】:您好Vikas Vaidya您也可以使用以下代码来解决此问题:
function filterArrayofObjects(objKey, objValue)
var temp = [], count = -1;
for (var i in types)
var flag = false;
var obj = ;
for (var j in types[i])
if (j === objKey && types[i][j] === objValue)
flag = true;
continue;
obj[j] = types[i][j];
if (flag)
count++;
temp[count] = obj;
return temp;
var result = filterArrayofObjects("type", "Type 2");
window.console.log(result);
【讨论】:
【参考方案5】:您可以使用下划线 js。 _.filter 和 _.map 可以帮助你达到想要的结果
【讨论】:
操作没有提到下划线 Array.map() 应该被使用。以上是关于如何从数组中获取单个字段的主要内容,如果未能解决你的问题,请参考以下文章
如何在javascript中从多个数组中获取单个数组[重复]