我的 database.json 檔案如下所示:
{
"opened_tickets": [
{
"userid": "4",
"ticketid": "customer_info",
"opened_timestamp": "1662543404514"
},
{
"userid": "2",
"ticketid": "customer_info",
"opened_timestamp": "1662543405860"
},
{
"userid": "4",
"ticketid": "customer_info",
"opened_timestamp": "1662543411026"
}
],
"tickets_counter": {
"account_problems": "1",
"customer_info": "4",
"payment_problems": "6",
"other": "8"
}
}
我想洗掉open_tickets陣列中userid和ticketid相同的物件,然后將資料保存到同一個檔案中。所以在這種情況下,檔案 databases.json 應該如下所示:
{
"opened_tickets": [
{
"userid": "2",
"ticketid": "customerinfo",
"opened_timestamp": "1662543405860"
}
],
"tickets_counter": {
"account_problems": "1",
"customer_info": "4",
"payment_problems": "6",
"other": "8"
}
}
如何在 node.js 中執行此操作?
uj5u.com熱心網友回復:
首先,您需要閱讀檔案的內容。在 Node.js 中,您可以使用fs 模塊來執行此操作。檔案非常好,但是有多種做事方式,所以一開始可能有點不知所措。
在 JavaScript 中執行檔案系統操作的三種主要方式如下:
uj5u.com熱心網友回復:
因此,您可以通過鍵(這是 userid 和 ticketid 的組合)將專案分組到更小的陣列中。最后,您采用那些長度==1 表示沒有重復的陣列。
var obj={opened_tickets:[{userid:"4",ticketid:"customer_info",opened_timestamp:"1662543404514"},{userid:"2",ticketid:"customer_info",opened_timestamp:"1662543405860"},{userid:"4",ticketid:"customer_info",opened_timestamp:"1662543411026"}],tickets_counter:{account_problems:"1",customer_info:"4",payment_problems:"6",other:"8"}}
var trimmed = Object.values(obj.opened_tickets.reduce(function(agg, item) {
var key = item.userid "|" item.ticketid
agg[key] = agg[key] || []
agg[key].push(item)
return agg;
}, {})).filter(function(item) {
return item.length == 1
}).map(function(item) {
return item[0]
})
obj.opened_tickets = trimmed;
console.log(obj)
.as-console-wrapper {max-height: 100% !important}
uj5u.com熱心網友回復:
你可以這樣做:
const fs = require('fs');
const Path = require('path');
// The path is relative to this script's directory
const filePath = Path.join(__dirname, 'path/to/file.json');
const data = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
data.opened_tickets = data.opened_tickets.filter(
ticket => ticket.userid !== data.tickets_counter[ticket.ticketid]
);
fs.writeFileSync(filePath, JSON.stringify(data, 0, 2));
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/505201.html
標籤:javascript 节点.js json 文件 npm