我的 JSON 輸出類似于下面的物件,我們有一個陣列值,如下所示
const object1 = {
"sublists": {
"item": [{
"line": "1",
"amount": "1200.00",
"id": "227",
"item": "227",
"item_display": "5800520002800",
"quantity": "1"
}
],
"shipping": [{
"line": "1",
"amount": "1200.00",
"id": "227",
"quantity": "1"
}
]
}
}
我正在嘗試在單獨的變數中獲取陣列和值的名稱,如下所示
陣列名稱:item,line:,1 陣列名稱:item,數量:1200 陣列名稱:item,id:227 等等......陣列屬性可以根據 json 輸出而變化,我正在尋找一個動態腳本,其中我可以訪問陣列名稱和屬性
有人可以幫我嗎?
uj5u.com熱心網友回復:
嘗試這個
for (const obj in object1.sublists) {
if (object1.sublists[obj].length == 0) continue;
object1.sublists[obj].forEach((value) => {
var k='';
var v='';
for (const prop in value) {
if (prop.includes("val")) v = value[prop];
else k = value[prop];
}
console.log(`Array name: ${obj} , key: ${k} value: ${v}`);
});
};
這是您洗掉的第二個問題的代碼
for (const obj in object1.sublists) {
if (object1.sublists[obj].length == 0) continue;
object1.sublists[obj].forEach((value) => {
for (const prop in value) {
console.log(`Array name : ${obj} , ${prop} : ${value[prop]}`);
}
});
}
uj5u.com熱心網友回復:
實作預期結果的簡單方法是將“parentKey”傳遞給遞回呼叫:
const object1 = {sublists: {sales_order: [], data: [{"key1": "a", "value": 2 }, {"key1": "b", "value": 4 }], memo: [{"key1": "a", "value": 5 }] } };
function printValues(obj, parentName = null) {
if (Object.prototype.toString.call(obj) === '[object Array]') {
obj.forEach(o => console.log(`Array name: ${parentName}. Key1: ${o.key1}. Value: ${o.value}`));
} else {
for (let k in obj) {
printValues(obj[k], k);
}
}
};
printValues(object1) ;
- 第一個
if陳述句 if 檢查變數是陣列還是物件。邏輯取自:
如何檢查變數是否是 JavaScript 中的陣列?
Array name: data. Key1: a. Value: 2
Array name: data. Key1: b. Value: 4
Array name: memo. Key1: a. Value: 5
uj5u.com熱心網友回復:
我相信這會解決你的問題。我遵循了您提供的代碼的遞回性質并對其進行了調整,以確保它提供了您想要的輸出。如果您有任何問題,請告訴我,我會盡力解決。
function printValues(obj) {
for (const [objKey, objValue] of Object.entries(
obj
)) {
if (
typeof objValue === 'object' &&
!objValue.length
) {
printValues(objValue);
} else if (
objValue !== undefined &&
objValue.length > 0
) {
for (let i = 0; i < objValue.length; i ) {
const currentObject = objValue[i];
let str = '';
for (const [key, value] of Object.entries(
currentObject
)) {
str = `Array name: ${objKey} , key1: ${key} , value: ${value}\n`;
}
console.log(str);
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/440673.html
標籤:javascript 数组 目的
