2016-08-03 119 views
0

我有对象的一个​​这样的数组:筛选器属性

var bridges = {"countyCd:15 
createdDate:"0001-01-01T00:00:00" 
createdUserId:0 
createdUserIdZ:null 
createdUserName:null 
description:"SR [email protected] RR COMP OF IND" 
districtId:null 
encryptedId1:null 
encryptedId2:null 
isDirty:false 
modelState:null 
nbiNumber:10 
routeNbr:"1" 
routeTypeCd:"SR" 
transactionType:null 
updatedDate:"0001-01-01T00:00:00" 
updatedUserId:0 
updatedUserIdZ:null 
updatedUserName:null", [...]....} 

我有这样

[countyCd, nbiNumber] 

另一个数组如何创建另一个数组仅保留两个属性所以它变得像

桥= { “countyCd:15 nbiNumber:10” ,[...] ....}

基本上,我正在寻找一种方法来创建一个函数,该函数将数据数组和过滤器数组作为参数,并根据过滤器数组过滤数据数组。

任何指针,将不胜感激。

+0

'bridges'实际上是一个数组,还是它像你发布的对象?该解决方案会因此而有所不同 –

+0

@ RobM.Bridges是一个对象数组。我很抱歉我的问题含糊不清。 – w2olves

回答

3

一个解决办法是map在每个记录和reduce您的滤波器阵列成一个对象包含目标根据企业的性质:

var bridges = [{ 
    countyCd:15, 
    createdDate:"0001-01-01T00:00:00", 
    createdUserId:0, 
    createdUserIdZ:null, 
    createdUserName:null, 
    description:"SR [email protected] RR COMP OF IND", 
    districtId:null, 
    encryptedId1:null, 
    encryptedId2:null, 
    isDirty:false, 
    modelState:null, 
    nbiNumber:10, 
    routeNbr:"1", 
    routeTypeCd:"SR", 
    transactionType:null, 
    updatedDate:"0001-01-01T00:00:00", 
    updatedUserId:0, 
    updatedUserIdZ:null, 
    updatedUserName:null 
}, { 
    countyCd:23, 
    createdDate:"0001-01-01T00:00:00", 
    createdUserId:0, 
    createdUserIdZ:null, 
    createdUserName:null, 
    description:"SR [email protected] RR COMP OF IND", 
    districtId:null, 
    encryptedId1:null, 
    encryptedId2:null, 
    isDirty:false, 
    modelState:null, 
    nbiNumber:10, 
    routeNbr:"1", 
    routeTypeCd:"SR", 
    transactionType:null, 
    updatedDate:"0001-01-01T00:00:00", 
    updatedUserId:0, 
    updatedUserIdZ:null, 
    updatedUserName:null 
}]; 

var filters = ['countyCd', 'nbiNumber']; 
var transformedRecords = bridges.map(bridge => filters.reduce((p, c) => { 
    p[c] = bridge[c]; 
    return p; 
}, {})); 
console.log(transformedRecords); 
1

说当你有bridges的阵列,称之为bA

var bA = []; //bridges array 
var nbiA = []; // nbia array with countyCd 
var newA = []; // new array 
bA.forEach(function(element, index, array){ 
    var newEntry = { 
     'countyCd':element.countyCd, 
     'nbiNumber':nbiA.find(function(nbi){ 
      return nbi[countyCd] == element.countyCd; 
     }).nbiNumber 
    }; 
    newA.push(newEntry); 
}); 
//do whatever you want with the newA array