如何在javascript中从数组和另一个对象传递对象

时间:2017-09-20 12:10:22

标签: javascript angularjs ionic-framework

我需要根据服务器的响应更新本地数据库中的数据,但我从服务器获取了大量本地数据库不需要的数据,所以我手动删除了那些不需要的值,但我想做这是一种动态的方式。所以我使用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);
        }

2 个答案:

答案 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