【问题标题】:function to add new Objekt in an existing object在现有对象中添加新对象的函数
【发布时间】:2021-12-24 02:12:57
【问题描述】:

我对 Javascript 还很陌生,并且对编写一个小东西有一个想法。我们的想法是在这里制作一个 Objekt (kunden),我们有一些客户。在这个 Objekt 中,我有一个现有的客户端 (kunde_1) 和一个方法 (erstellen() )。使用该方法,我想使用客户端计数器向现有的 Objekt (kunden) 添加一个新客户端 (new Objekt)。每次调用函数时,计数器都应该计数。这是我的尝试,但我不知道如何使用我的计数器来创建新客户端。这是我得到的错误:

未捕获的类型错误:无法在字符串“kunde_2”上创建属性“vorname”

是否可以稍微调整我的代码以使其正确,或者我是否走上了完全错误的道路......

let count_kunde = 1; // because i already have one client called kunde_1
let kunden = {

erstellen() {
    count_kunde +=1;
    let neuer_kunde = `kunden_${count_kunde}`; // the idea was to create a variable that stores "kunde_2" and through DOT Notation add the values via prompt.
    neuer_kunde.vorname = prompt("Vorname:"),
    neuer_kunde.nachname= prompt("Nachname"),
    neuer_kunde.straße= prompt("Straße"),
    neuer_kunde.hausnummer= prompt("Hausnummer"),
    neuer_kunde.plz= prompt("Plz"),
    neuer_kunde.ort= prompt("Ort")
},

kunde_1: {
    vorname: "Bengt",   
    nachname: "Flecks",
    straße: "Scheffelstraße",
    hausnummer: 33,
    plz: 10367,
    ort: "Berlin"

}

};

这是解决问题后的新代码,特别感谢@Deivid Ugarte(我的 cmets 是德语):

// Anzahl aktueller Kunden zum Start des Programms
let count_kunde = 1; 

// Erstellung des Objektes kunden zum speichern der neu erstellten 
Kunden
let kunden = {

kunde_1: {
    vorname: "Bengt",
    nachame: "Flecks",
    straße: "Scheffelstraße",
    hausnummer: 33,
    plz: 10367,
    ort: "Berlin"
}
};

//Funktion zum erstellen eines neuen Kunden
const kunden_erstellen = function() {

    count_kunde += 1;
    let neuer_kunde = `kunde_${count_kunde}`;
    // Erstellung des Objektes kunden.kunde_n wobei n = count_kunde um 
    im nächsten Schritt die Eigentschaften mit den eingeegebenen Werten 
    hinzuzufügen
    kunden[neuer_kunde] = {}; 
    kunden[neuer_kunde].vorname = prompt("Vorname:"),
    kunden[neuer_kunde].nachname = prompt("Nachname"),
    kunden[neuer_kunde].straße= prompt("Straße"),
    kunden[neuer_kunde].hausnummer= prompt("Hausnummer"),
    kunden[neuer_kunde].plz= prompt("Plz"),
    kunden[neuer_kunde].ort= prompt("Ort")

};

// Funktionsaufruf zum erstellen eines Kunden
kunden_erstellen();

【问题讨论】:

    标签: object methods


    【解决方案1】:

    您需要将 neuer_kunde 定义为对象let neuer_kunde = {},然后将名称分配给对象neuer_kunde.name = kunden_${count_kunde}。

    您遇到的错误是您试图将属性分配给第一个创建的字符串

    【讨论】:

    • 对不起,不明白 :-) 好的。将 neuer_kunde 声明为 Object 对我来说很有意义。但是名称应该是 kunde_2(因为此时 count_kunde 应该是 2)。定义对象是没有问题的。但是将该对象的名称设置为“kunden_${count_kunde}确实不起作用。我迷路了^^
    • 哦!我知道想要你想要的。您需要动态名称。所以首先你需要一个对象来存储它们。示例:let kunden ={} 然后而不是 neuer_kunde.vorname 你这样做 kunden[neuer_kunde].vorname = fooBar 这将创建一个对象,其中所有 kunden_number 作为键 kunden = { kunden_1: {}, kunden_2:{} ...... kunden_n: {} }
    • 您的回答对我帮助很大。对我来说,主要部分是在我的函数中创建 Objekt '''kunden[neuer_kunde] = {};''' - 否则它不起作用 - 然后使用我的 promt 设置属性。现在它做了我想要的。如果我调用该函数,我将根据 count_kunde 的数量创建一个新的 kunde_n。这就是我最终的结果:
    猜你喜欢
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 2016-04-16
    相关资源
    最近更新 更多