我是 javaScript 的初學者,我有這個物件 MyGraph:
const MyGraph = {
a: { b: 5, c: 2 },
b: { a: 5, c: 7, d: 8 },
c: { a: 2, b: 7, d: 4, e: 8 },
};
我想洗掉屬性“a”及其在其他屬性中的值以獲得此結果:
const MyGraph = {
b: { c: 7, d: 8 },
c: { b: 7, d: 4, e: 8 },
};
我試過這樣:
for(let XXX of Object.keys(MyGraph)){
console.log(XXX.a);
delete XXX.a;
}
執行結果:
undefined
undefined
undefined
任何幫助!
uj5u.com熱心網友回復:
您可以使用遞回演算法:
function del_entries(key, obj) {
if (obj.hasOwnProperty(key)) {
delete obj[key];
}
// Or with Object.hasOwn, not fully supported by old browsers but more up to date
/*
if (Object.hasOwn(obj, key)) {
delete obj[key]
}
*/
Object.values(obj).forEach(o=> del_entries(key, o))
}
const MyGraph = {
a: { b: 5, c: 2 },
b: { a: 5, c: 7, d: 8 },
c: { a: 2, b: 7, d: 4, e: 8 },
};
del_entries("a", MyGraph);
console.log(MyGraph)
uj5u.com熱心網友回復:
在您的代碼XXX中是關鍵。您需要做graph[XXX]才能訪問實際物件。所以代替XXX.a你應該做graph[XXX].a. 但這僅適用于graph具有 key的物件a。您還需要考慮a輸入graph. 請看下面的代碼。它是一個基本的例子。
如果您有一級嵌套,那么您可以使用然后您可以使用下面的代碼。
const graph = {
a: { b: 5, c: 2 },
b: { a: 5, c: 7, d: 8 },
c: { a: 2, b: 7, d: 4, e: 8 },
};
console.log(graph);
function deletePropAndValuesOf(key) {
for (const k of Object.keys(graph)) {
if (k === key) {
delete graph[key];
} else {
if (key in graph[k]) {
delete graph[k][key]
}
}
}
}
deletePropAndValuesOf("a");
console.log(graph);
您可以將代碼復制到.js檔案并使用 node.js 運行它。例如

uj5u.com熱心網友回復:
我已經使用物件解構來洗掉第一個帶有 a 的陣列,但無法弄清楚如何做所有的 a,但下面的代碼可能會有所幫助?
const MyGraph = {
a: { b: 5, c: 2 },
b: { a: 5, c: 7, d: 8 },
c: { a: 2, b: 7, d: 4, e: 8 }};
const {a, ...newMyGraph} = MyGraph;
// output
console.log(newMyGraph)
回傳
b: {
a: 5,
c: 7,
d: 8
},
c: {
a: 2,
b: 7,
d: 4,
e: 8
}
}
uj5u.com熱心網友回復:
這應該足夠了。
const MyGraph = {
a: { b: 5, c: 2 },
b: { a: 5, c: 7, d: 8 },
c: { a: 2, b: 7, d: 4, e: 8 },
};
delete MyGraph.a; // Delete a
for (let key of Object.keys(MyGraph)) {
delete MyGraph[key].a; // Delete property a from every object
}
console.log(MyGraph);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/462492.html
標籤:javascript
上一篇:按下按鈕時如何使背景半可見?
