从另一个JSON对象数组创建JSON对象数组

时间:2015-01-17 14:15:04

标签: javascript json node.js

我有一个像这样的JSON数组:

[{Company:"", FirstName:"John", SecondName:"Smith", ID:"2345"},
{Company:"SomeComp", FirstName:"", SecondName:"Kane", ID:"4363"},
{Company:"Random", FirstName:"Tom", SecondName:"", ID:"6454"}]

我想解析它并创建一个新的对象数组,这些对象只包含没有ID的非空属性,即:

[{FirstName:"John", SecondName:"Smith"},
{Company:"SomeComp", SecondName:"Kane"},
{Company:"Random", FirstName:"Tom"}]

在Javascript中执行此操作的最佳方式是什么?

2 个答案:

答案 0 :(得分:2)

您可以使用map

  

map()方法创建一个新数组,其中包含调用a的结果   为此数组中的每个元素提供了函数。

var companies = [{Company:"", FirstName:"John", SecondName:"Smith", ID:"2345"},
{Company:"SomeComp", FirstName:"", SecondName:"Kane", ID:"4363"},
{Company:"Random", FirstName:"Tom", SecondName:"", ID:"6454"}];
   
// This returns a new array
var newArray = companies.map(function(item) {
     var obj = {};
     for(var prop in item) {
          if (item[prop] !== "" && prop !== "id" ) {
              obj[prop] = item[prop];
          };
     }
     return obj;
});
 
console.log(newArray);

答案 1 :(得分:0)

这应该这样做

var input = JSON.parse("<YOUR JSON HERE>");
var output = [];
input.forEach(function(item) {
     delete item.ID;
     for (var prop in item) {
         if (item.hasOwnProperty(prop) && item[prop] === "") {
              item[prop] = undefined;
         }             
     }
output.push(item);
});