我有一个像这样的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中执行此操作的最佳方式是什么?
答案 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);
});