Удалить свойства из json-объекта
JSON-объекты формируются из excel-файла функцией:
var ExcelToJSON = function (sheetNameRead) {
// Get The File From The Input
var oFile = document.getElementById('uploadFile').files[0];
//var oFile = oFileIn.target.files[0];
var sFilename = oFile.name;
// Create A File Reader HTML5
var reader = new FileReader();
var json_objects = [];
return new Promise(resolve => {
// Ready The Event For When A File Gets Selected
reader.onload = function (event) {
var data = event.target.result;
var cfb = XLSX.read(data, { type: 'binary' });
// Loop Over Each Sheet
cfb.SheetNames.forEach(function (sheetName) {
if (sheetName == sheetNameRead) {
// Obtain The Current Row As CSV
var sCSV = XLS.utils.make_csv(cfb.Sheets[sheetName]);
var json_object = XLS.utils.sheet_to_json(cfb.Sheets[sheetName]);
//json_objects.push(json_object.select("oIDobject personalAccount idAccrual dateAccrual summAccrual datePayment summPayment"));
json_objects.push(json_object);
}
});
if (json_objects != undefined & json_objects.length > 0) {
json_objects = json_objects[0];
}
resolve(json_objects);
};
// Tell JS To Start Reading The File.. You could delay this if desired
reader.readAsBinaryString(oFile);
});
}
Но мне в объекте нужны не все поля книги Excel, а только определенные. Я сначала пытался удалять не нужные свойства следующим способом:
//Удаление лишних полей из json-объектов
properties=["oIDobject", "personalAccount", "idAccrual"];
function removePropertysJsonObjects(jsonObjects, properties) {
for (i = 0; i < jsonObjects.length;i++){
jsonObjects[i]=removePropertysJsonObj(jsonObjects[i], properties);
}
return jsonObjects;
}
//Удаление лишних полей из json-объекта
function removePropertysJsonObj(jsonObj, properties) {
for (property in jsonObj) {
if (properties.indexOf(property) == -1) {
delete 'jsonObj.' +'property';
}
}
return jsonObj;
}
Этот вариант не сработал вот в этой части:
delete 'jsonObj.' +'property';
Далее пытался применить функцию select в функции конвертации Excel in json (в интернете её нашел), но мне выдает ошибку, что нет такой функции:
json_object.select("oIDobject personalAccount idAccrual dateAccrual summAccrual datePayment summPayment")
Подскажите, как это можно реализовать?
Может быть это возможно сделать на этапе чтения листа книги Excel?
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
Если у вас есть массив json и поля которые не нужны, то поступайте проще.
let jsonArray = [{
"id": 1,
"oIDobject": "1",
"personalAccount": "1",
"idAccrual": "1"
},
{
"id": 2,
"oIDobject": "2",
"personalAccount": "2",
"idAccrual": "2"
},
{
"id": 3,
"oIDobject": "3",
"personalAccount": "3",
"idAccrual": "3"
}
]
properties=["oIDobject", "personalAccount", "idAccrual"];
let result = jsonArray.map(
item =>Object.fromEntries(
Object.entries(item).filter(
([key,value]) => !properties.includes(key)
)
)
);
console.log(result);