by Guest » 12 Jan 2025, 11:29
Ich habe zwei Variablen, die ein Objekt speichern. Eine der Eigenschaften des Objekts ist ein anderes Objekt (Array).
Code: Select all
const master = [
{key:"Apprentices", label:"Apprentices", children:[
{key:"1", label:"Linda"},
{key:"2", label:"George"}
]},
{key:"Electricians", label:"Electricians", children:[
{key:"3", label:"Kate"},
{key:"4", label:"Diane"}
]}
]
var elements = Array.from(master);
Ich möchte {key:"4", label:"Diane" aus der
elements Variable entfernen (mit .splice), aber wenn ich das tue, wird es auch aus der
Master Variable entfernt.
Interessanterweise wenn ich eine nicht untergeordnete Eigenschaft entferne, z. B.
Code: Select all
{key:"Apprentices", label:"Apprentices", children:[
{key:"1", label:"Linda"},
{key:"2", label:"George"}
]}
Es wird nicht aus der
Master Variable entfernt, sondern nur aus der
Elements Variable wie beabsichtigt.
In meiner Anwendung kann ich die Master-Variable leider nicht als CONST haben, aber auf jsplayground.dev kann ich das und das ist nicht der Fall einen Unterschied machen.
Hier ist mein vollständiger Code zum Entfernen eines Elements aus der
children Eigenschaft, das letztendlich aus beiden Variablen entfernt wird:
Code: Select all
const master = [
{key:"Apprentices", label:"Apprentices", children:[
{key:"1", label:"Linda"},
{key:"2", label:"George"}
]},
{key:"Electricians", label:"Electricians", children:[
{key:"3", label:"Kate"},
{key:"4", label:"Diane"}
]}
]
var elements = Array.from(master);
var el = {'name': 3, 'label': 'Kate'}
console.log(elements)
console.log(master) // this is master variable not 'elements' variable
function addRemoveElement(el, addRemove, all) {
if (addRemove === 0) {
// remove
elements.forEach((item) => item.children.forEach((subItem, i) => {
if (subItem.label === el.label) {
item.children.splice(i, 1);
}
}));
}
console.log(elements)
console.log(master) // this is master variable not 'elements' variable
}
addRemoveElement(el, 0)
Hier ist mein vollständiger Code zum Entfernen einer Eigenschaft der obersten Ebene, die nur eine Variable korrekt entfernt:
Code: Select all
const master = [
{key:"Apprentices", label:"Apprentices", children:[
{key:"1", label:"Linda"},
{key:"2", label:"George"}
]},
{key:"Electricians", label:"Electricians", children:[
{key:"3", label:"Kate"},
{key:"4", label:"Diane"}
]}
]
var elements = Array.from(master);
var el = {'key': 'Apprentices', 'label': 'Apprentices'}
console.log(elements)
console.log(master) // this is master variable not 'elements' variable
function addRemoveElement(el, addRemove, all) {
if (addRemove === 0) {
// remove
elements.forEach((item, i) => {
if (item.label === el.label) {
elements.splice(i, 1);
}
});
}
console.log(elements)
console.log(master) // this is master variable not 'elements' variable
}
addRemoveElement(el, 0)
Konsolenprotokolle für jedes:
1 – entfernt von beiden:
Code: Select all
(2) [Object, Object]
0: Object
1: Object
key: "Electricians"
label: "Electricians"
children: (2) [Object, Object]
(2) [Object, Object]
0: Object
1: Object
key: "Electricians"
label: "Electricians"
children: (2) [Object, Object]
(2) [Object, Object]
0: Object
1: Object
key: "Electricians"
label: "Electricians"
children: (1) [Object]
(2) [Object, Object]
0: Object
1: Object
key: "Electricians"
label: "Electricians"
children: (1) [Object]
2 – wird korrekt von einem entfernt
Code: Select all
(2) [Object, Object]
0: Object
1: Object
(2) [Object, Object]
0: Object
1: Object
(1) [Object]
0: Object
(2) [Object, Object]
0: Object
1: Object
Ich bin JavaScript-Neuling und habe mich schon einmal geärgert, als zwei Variablen aus derselben Quelle gefüllt wurden und wenn sich diese Quelle ändert, ändern sich auch beide Variablen. Aber in diesem Fall sollte es aufgrund von Array.from() und auch CONST nicht passieren, aber mein zweites Beispiel entfernt nicht von beiden.
Da ich wirklich nicht weiterkomme, wäre ich für jede Anleitung sehr dankbar. Vielen Dank.
Ich habe zwei Variablen, die ein Objekt speichern. Eine der Eigenschaften des Objekts ist ein anderes Objekt (Array).
[code]const master = [
{key:"Apprentices", label:"Apprentices", children:[
{key:"1", label:"Linda"},
{key:"2", label:"George"}
]},
{key:"Electricians", label:"Electricians", children:[
{key:"3", label:"Kate"},
{key:"4", label:"Diane"}
]}
]
var elements = Array.from(master);
[/code]
Ich möchte {key:"4", label:"Diane" aus der [b]elements[/b] Variable entfernen (mit .splice), aber wenn ich das tue, wird es auch aus der [b]Master[/b] Variable entfernt.
Interessanterweise wenn ich eine nicht untergeordnete Eigenschaft entferne, z. B.
[code]{key:"Apprentices", label:"Apprentices", children:[
{key:"1", label:"Linda"},
{key:"2", label:"George"}
]}
[/code]
Es wird nicht aus der [b]Master[/b] Variable entfernt, sondern nur aus der [b]Elements[/b] Variable wie beabsichtigt.
In meiner Anwendung kann ich die Master-Variable leider nicht als CONST haben, aber auf jsplayground.dev kann ich das und das ist nicht der Fall einen Unterschied machen.
Hier ist mein vollständiger Code zum Entfernen eines Elements aus der [b]children[/b] Eigenschaft, das letztendlich aus beiden Variablen entfernt wird:
[code]const master = [
{key:"Apprentices", label:"Apprentices", children:[
{key:"1", label:"Linda"},
{key:"2", label:"George"}
]},
{key:"Electricians", label:"Electricians", children:[
{key:"3", label:"Kate"},
{key:"4", label:"Diane"}
]}
]
var elements = Array.from(master);
var el = {'name': 3, 'label': 'Kate'}
console.log(elements)
console.log(master) // this is master variable not 'elements' variable
function addRemoveElement(el, addRemove, all) {
if (addRemove === 0) {
// remove
elements.forEach((item) => item.children.forEach((subItem, i) => {
if (subItem.label === el.label) {
item.children.splice(i, 1);
}
}));
}
console.log(elements)
console.log(master) // this is master variable not 'elements' variable
}
addRemoveElement(el, 0)
[/code]
Hier ist mein vollständiger Code zum Entfernen einer Eigenschaft der obersten Ebene, die nur eine Variable korrekt entfernt:
[code]const master = [
{key:"Apprentices", label:"Apprentices", children:[
{key:"1", label:"Linda"},
{key:"2", label:"George"}
]},
{key:"Electricians", label:"Electricians", children:[
{key:"3", label:"Kate"},
{key:"4", label:"Diane"}
]}
]
var elements = Array.from(master);
var el = {'key': 'Apprentices', 'label': 'Apprentices'}
console.log(elements)
console.log(master) // this is master variable not 'elements' variable
function addRemoveElement(el, addRemove, all) {
if (addRemove === 0) {
// remove
elements.forEach((item, i) => {
if (item.label === el.label) {
elements.splice(i, 1);
}
});
}
console.log(elements)
console.log(master) // this is master variable not 'elements' variable
}
addRemoveElement(el, 0)
[/code]
Konsolenprotokolle für jedes:
1 – entfernt von beiden:
[code](2) [Object, Object]
0: Object
1: Object
key: "Electricians"
label: "Electricians"
children: (2) [Object, Object]
(2) [Object, Object]
0: Object
1: Object
key: "Electricians"
label: "Electricians"
children: (2) [Object, Object]
(2) [Object, Object]
0: Object
1: Object
key: "Electricians"
label: "Electricians"
children: (1) [Object]
(2) [Object, Object]
0: Object
1: Object
key: "Electricians"
label: "Electricians"
children: (1) [Object]
[/code]
2 – wird korrekt von einem entfernt
[code](2) [Object, Object]
0: Object
1: Object
(2) [Object, Object]
0: Object
1: Object
(1) [Object]
0: Object
(2) [Object, Object]
0: Object
1: Object
[/code]
Ich bin JavaScript-Neuling und habe mich schon einmal geärgert, als zwei Variablen aus derselben Quelle gefüllt wurden und wenn sich diese Quelle ändert, ändern sich auch beide Variablen. Aber in diesem Fall sollte es aufgrund von Array.from() und auch CONST nicht passieren, aber mein zweites Beispiel entfernt nicht von beiden.
Da ich wirklich nicht weiterkomme, wäre ich für jede Anleitung sehr dankbar. Vielen Dank.