2017-09-20 48 views
0

我需要根据服务器的响应更新本地数据库中的数据,但我从服务器获取大量本地数据库不需要的数据,所以我有手动删除这些不需要的值,但我想以动态的方式做到这一点。所以我从本地数据库使用编译指示了列的名称,我比较了我从服务器获得的值与我存储在数组中的名称。但是我想将关键值和值存储在一个对象中。任何人告诉我该怎么做?如何从javascript中的数组和另一个对象传递对象

columns = ['id', 'name', 'category']; 
category = {id: 122, name: 'ABD', category: 'Food', created_at: '2014-05-20', is_deleted: 'false'}; 

我所需要的结果为: VAR数据= {ID:122,名称: 'ABD',类别: '食品'};

代码:

for (var j = 0; j < columns.length; j++) { 
      $log.log('Merged data is', value.category[columns[j]]); 
      $log.log('Data is', data); 
     } 
+0

使用reduce对于这种类型的东西比如好。 - >'columns.reduce((a,v)=>(a [v] = category [v])&& a,{})'ps,如果你不介意使用ES6,你想让我解释这个工程,让我们知道.. – Keith

回答

2

您可以在阵列上进行迭代,并检查该元素是在对象的属性。如果不是那么你可以从对象中删除该属性。

for (var j = 0; j < columns.length; j++) { 
     if(category[columns[j]] === undefined){ 
     delete category[columns[j]]; 
     } 
} 

编辑:

至于问意见,如果你不想删除的属性,你可以创建所需的属性的新对象:

var data = {}; 
for (var j = 0; j < columns.length; j++) { 
    data[columns[j]] = category[columns[j]]; 
} 
console.log(data); 
+0

但我不想删除额外的一个我需要为本地数据库中可用的列值。 –

+0

好的,我也会编辑我的答案 –

+0

嗨@Nidhinkumar请检查现在是否解决你的目的,如果它确实接受答案。 –

0

一个lodash一线解决方案,如果你喜欢:

var data = _.map(category , _.partialRight(_.pick, ['id', 'name', 'category'])); 

lodash doc s这里https://lodash.com/docs/4.17.4

相关问题