如何从数组中获取单个字段

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】:

您可以使用filtermap 的组合。或者,您可以使用这个名为reduce 的神奇函数,它可以单独使用filtermap 您的数组。像这样:

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() 应该被使用。

以上是关于如何从数组中获取单个字段的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 LINQ 中的键对值从单个字段中获取重复数据?

如何在javascript中从多个数组中获取单个数组[重复]

如何从 VBA 中的两个数组函数获取单个数组输出?

如何从 JSON 数组中的 JSON 对象中的单个值获取数据?

从Mongo DB嵌套数组中获取不同的值并输出到单个数组

获取mysql中的多条记录并存入json数组中显示在HTML表格单单字段中