我需要根据服务器的响应更新本地数据库中的数据,但我从服务器获取了大量本地数据库不需要的数据,所以我手动删除了那些不需要的值,但我想做这是一种动态的方式。所以我使用pragma从本地数据库中获取了列名,我将从服务器获取的值与我在数组中存储的名称进行比较。但是我想将键和值存储在object.can中告诉我怎么做?
columns = ['id', 'name', 'category'];
category = {id: 122, name: 'ABD', category: 'Food', created_at: '2014-05-20', is_deleted: 'false'};
我需要结果如下: var data = {id:122,name:' ABD',category:' Food'};
代码:
for (var j = 0; j < columns.length; j++) {
$log.log('Merged data is', value.category[columns[j]]);
$log.log('Data is', data);
}
答案 0 :(得分: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);
答案 1 :(得分:0)
如果您愿意,可以使用lodash单行解决方案:
var data = _.map(category , _.partialRight(_.pick, ['id', 'name', 'category']));
lodash docs https://lodash.com/docs/4.17.4