我正在嘗試替換 JSON 檔案中的特定值。假設下面給出的是我的 JSON 資料
示例.json
let sample={
"yuiwedw":{
"id":"yuiwedw",
"loc": "ar",
"body":{
"data":"we got this",
"loc":"ar",
"system":{
"fname":"admin",
"lname":"admin",
"details":[
{
"id":"Admin_01",
"loc":"ar"
},
{
"id":"Admin_02",
"loc":"ar"
}
]
}
}
},
"hbjds324":{
"id":"hbjds324",
"loc": "ar",
"body":{
"data":"testing",
"loc":"ar",
"system":{
"fname":"public",
"lname":"servent",
"details":[
{
"id":"public_01",
"loc":"ar"
}
],
"Available":true,
"loc":"ar"
}
}
}
}
for (const value of Object.values(
sample )) {
value.loc = "en";
}
console.log(sample);
所以我想替換所有的loc值,ar我en可以替換第一級的值,但是如何更改loc存在于不同級別的所有值。
uj5u.com熱心網友回復:
您可以撰寫一個簡單的遞回函式來處理這個問題。這會遍歷鍵,如果鍵的值是它自己呼叫的物件。如果關鍵是loc它會替換它的值。
這是您的示例的jsfiddle。
例子:
function replaceLoc(obj){
for(const key of Object.keys(obj)){
if (typeof obj[key] === 'object'){
replaceLoc(obj[key]);
}
if (key === 'loc'){
obj[key] = 'en'
}
}
}
replaceLoc(sample);
顯示代碼片段
let sample={
"yuiwedw":{
"id":"yuiwedw",
"loc": "ar",
"body":{
"data":"we got this",
"loc":"ar",
"system":{
"fname":"admin",
"lname":"admin",
"details":[
{
"id":"Admin_01",
"loc":"ar"
},
{
"id":"Admin_02",
"loc":"ar"
}
]
}
}
},
"hbjds324":{
"id":"hbjds324",
"loc": "ar",
"body":{
"data":"testing",
"loc":"ar",
"system":{
"fname":"public",
"lname":"servent",
"details":[
{
"id":"public_01",
"loc":"ar"
}
],
"Available":true,
"loc":"ar"
}
}
}
}
function replaceLoc(obj){
for(const key of Object.keys(obj)){
if (typeof obj[key] === 'object'){
replaceLoc(obj[key]);
}
if (key === 'loc'){
obj[key] = 'en'
}
}
}
replaceLoc(sample);
console.log(sample);
uj5u.com熱心網友回復:
要搜索和替換嵌套值,您可以使用遞回(使您for...成為一個函式并在所有嵌套物件上從其自身內部呼叫該函式)。編輯:另一個答案顯示了如何做到這一點。
您也可以使用正則運算式來做到這一點。例子:
const regex = /"loc": *"ar"/g
const updatedSample = JSON.stringify(sample).replace(reg, `"loc":"ar"`);
說明:正則運算式"loc":"ar"在:. JavaScript 然后用你給它的值替換那些。下面是一個例子,展示了它是如何作業的。
uj5u.com熱心網友回復:
或者,您可以將 JSON 物件轉換為字串,并將所有出現的地方替換為正則運算式并將它們轉換回 JSON
const sampleString = JSON.stringify(sample);
const updatedSample = sampleString.replace(/"loc":"ar"/g, `"loc":"en"`);
const newSample = JSON.parse(updatedSample);
console.log(newSample);
完整示例如下:
let sample = {
yuiwedw: {
id: "yuiwedw",
loc: "ar",
body: {
data: "we got this",
loc: "ar",
system: {
fname: "admin",
lname: "admin",
details: [
{
id: "Admin_01",
loc: "ar"
},
{
id: "Admin_02",
loc: "ar"
}
]
}
}
},
hbjds324: {
id: "hbjds324",
loc: "ar",
body: {
data: "testing",
loc: "ar",
system: {
fname: "public",
lname: "servent",
details: [
{
id: "public_01",
loc: "ar"
}
],
Available: true,
loc: "ar"
}
}
}
};
const sampleString = JSON.stringify(sample);
const updatedSample = sampleString.replace(/"loc":"ar"/g, `"loc":"en"`);
const newSample = JSON.parse(updatedSample);
console.log(newSample);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/506919.html
標籤:javascript 节点.js 节点
上一篇:比較物件陣列的元素
