3 回答

TA貢獻1895條經驗 獲得超3個贊
您可以使用for..in
let data = {"player settings": [{"id": 1,"labelName": "site language","labelValue": [{"id": 1,"languageName": "ARABIC","language": "????","languageCode": "AE"},{"id": 2,"languageName": "CHINESE","language": "你的語言","languageCode":"ZH"},],"dataType": "DD","selectedData": "2"},],"player settings2": [{"id": 1,"labelName": "site language","labelValue": [{"id": 1,"languageName": "ARABIC","language": "????","languageCode": "AE"},{"id": 2,"languageName": "CHINESE","language": "你的語言","languageCode":"ZH"},],"dataType": "NO DD","selectedData": "2"},]}
for (let key in data) {
data[key].forEach(obj => {
if (obj.dataType === "DD") {
obj.selectedData = +(obj.selectedData || 0)
}
})
}
console.log(data)
不變的方法
let data = {"player settings": [{"id": 1,"labelName": "site language","labelValue": [{"id": 1,"languageName": "ARABIC","language": "????","languageCode": "AE"},{"id": 2,"languageName": "CHINESE","language": "你的語言","languageCode":"ZH"},],"dataType": "DD","selectedData": "2"},],"player settings2": [{"id": 1,"labelName": "site language","labelValue": [{"id": 1,"languageName": "ARABIC","language": "????","languageCode": "AE"},{"id": 2,"languageName": "CHINESE","language": "你的語言","languageCode":"ZH"},],"dataType": "NO DD","selectedData": "2"},]}
let newObj = {}
for (let key in data) {
newObj[key] = data[key]
data[key].forEach(obj => {
if (obj.dataType === "DD") {
newObj.selectedData = +(obj.selectedData || 0)
}
})
}
console.log(newObj)

TA貢獻1982條經驗 獲得超2個贊
我們可以在主 obj 上使用過濾器,然后繼續修改對象。
function modifyDataToNumber(){
let myObject = jsonObj['player settings'];
let ddMyObject = myObject.filter((row)=>(row["dataType"]==="DD"));
console.log(ddMyObject[0]["selectedData"]);
ddMyObject.forEach((row,index)=>{
ddMyObject[index]["selectedData"] = +ddMyObject[index]["selectedData"];
})
console.log(jsonObj);
}
modifyDataToNumber();

TA貢獻1830條經驗 獲得超9個贊
既然您說“重新生成”,我假設您想要一種不可變的方法(即,生成具有所需更改的數據副本,而不是更改原始對象)。
為此,您可以使用擴展語法和Array#map:
let convertSetting = setting => ({
...setting,
selectedData: setting.dataType === "DD"
? parseInt(setting.selectedData)
: setting.selectedData
});
let convert = x => ({
...x,
["player settings"]: x["player settings"].map(convertSetting)
});
然后,您可以將該功能用作convert(yourOriginalObject).
添加回答
舉報