2016-11-06 3 views
0

Я хотел бы сохранить некоторые свойства из массива объектов javascript. Вот массив объектов.JavaScript Сохранять определенные свойства и удалять другие свойства из массива объектов

obj_array = [{ 
     "CHR_ID": 1, 
     "CHR_NAME": "Jim", 
     "CHR_BB_TYP": 2, 
     "CHR_MAC": "5474", 
    }, 
    { 
     "CHR_ID": 3, 
     "CHR_NAME": "Fro", 
     "CHR_BB_TYP": 33, 
     "CHR_MAC": "8e30", 
    }, 
    { 
     "CHR_ID": 2, 
     "CHR_NAME": "Jimb", 
     "CHR_BB_TYP": 2, 
     "CHR_MAC": "45e8", 
    }, 
    { 
     "CHR_ID": 4, 
     "CHR_NAME": "Kht1", 
     "CHR_BB_TYP": 35, 
     "CHR_MAC": "58d0", 
    }, 
    { 
     "CHR_ID": 6, 
     "CHR_NAME": "Sens", 
     "CHR_BB_TYP": 34, 
     "CHR_MAC": "d004", 
    } 
] 

У меня есть этот массив строк, который определяет, какие свойства сохранить.

var str_array_criteria = ["CHR_ID", "CHR_NAME"]; 

После удаления массив объектов будет выглядеть следующим образом;

obj_array_removed = [{ 
     "CHR_ID": 1, 
     "CHR_NAME": "Jim",   
    }, 
    { 
     "CHR_ID": 3, 
     "CHR_NAME": "Fro", 
    }, 
    { 
     "CHR_ID": 2, 
     "CHR_NAME": "Jimb", 
    }, 
    { 
     "CHR_ID": 4, 
     "CHR_NAME": "Kht1", 
    }, 
    { 
     "CHR_ID": 6, 
     "CHR_NAME": "Sens", 
    } 
] 

Я использую node.js v6.

+1

Вы открыты для использования подчеркивания? –

+0

Да? Я открыт для всех решений. Большое спасибо. – user781486

ответ

2

Здесь вы идете с Object.keys,

var obj_array = [{ 
 
     "CHR_ID": 1, 
 
     "CHR_NAME": "Jim", 
 
     "CHR_BB_TYP": 2, 
 
     "CHR_MAC": "5474", 
 
    }, 
 
    { 
 
     "CHR_ID": 3, 
 
     "CHR_NAME": "Fro", 
 
     "CHR_BB_TYP": 33, 
 
     "CHR_MAC": "8e30", 
 
    }, 
 
    { 
 
     "CHR_ID": 2, 
 
     "CHR_NAME": "Jimb", 
 
     "CHR_BB_TYP": 2, 
 
     "CHR_MAC": "45e8", 
 
    }, 
 
    { 
 
     "CHR_ID": 4, 
 
     "CHR_NAME": "Kht1", 
 
     "CHR_BB_TYP": 35, 
 
     "CHR_MAC": "58d0", 
 
    }, 
 
    { 
 
     "CHR_ID": 6, 
 
     "CHR_NAME": "Sens", 
 
     "CHR_BB_TYP": 34, 
 
     "CHR_MAC": "d004", 
 
    } 
 
]; 
 

 
    var str_array_criteria = ["CHR_ID", "CHR_NAME"]; 
 

 
    obj_array.forEach(function(obj) { 
 
     Object.keys(obj).forEach(function(key){ 
 
     if(str_array_criteria.indexOf(key) === -1) { 
 
      delete obj[key]; 
 
      } 
 
     }); 
 
    }); 
 

 
    //var new_obj_array = obj_array.map(function(obj) { 
 
     //Object.keys(obj).forEach(function(key){ 
 
     //if(str_array_criteria.indexOf(key) === -1) { 
 
      //delete obj[key]; 
 
      //} 
 
     //}); 
 
     
 
     //return obj; 
 
    //}); 
 

 
    console.log(obj_array);

+0

Сегодня я действительно чувствую себя дураком. Большое спасибо! Ты блестящий. Я определенно попытаюсь освежить свои навыки. – user781486

+1

Не похоже на этого помощника, просто играя со свойствами и методами массива и объектов. Как только вы их узнаете, вы будете гуру :-) – Aruna

+1

Обратите внимание, что это решение разрушительно изменяет исходные объекты. В «карте» также нет цели - она ​​просто создает новый массив с теми же (модифицированными) элементами в нем. –

1

подчеркиванием, это будет просто

_.map(obj_array, elt => _.pick(elt, ...str_array_criteria)) 

 Смежные вопросы

  • Нет связанных вопросов^_^