Как я могу добавить свои данные во вложенный объект? - PullRequest
0 голосов
/ 25 сентября 2018
let users = {
    142201801: {
        name: "Pankaj Jaiswal",
        address: "Om sai rcm shopy , 400089",
        accountType: "Saving",
        deposits: 20000,
        withdraws: 15000,
        balance: 5000
    },
    142201802: {
        name: "John Deo",
        address: "Om sai rcm shopy , 400089",
        accountType: "Saving",
        deposits: 20000,
        withdraws: 15000,
        balance: 5000
    }
};
let accountNumber_inital = 142201805;

function accountMaker() {
    let accountNumber = accountNumber_inital + 1;
    let name = document.getElementById("userName").value;
    let address = document.getElementById("userAddress").value;
    let type = document.getElementById("accoutType").value;
    console.log("Account made");
}

У меня есть Объект пользователей, я уже добавил 2 пользователя жестким кодированием.

Мой объект - это вложенный объект, первый ключ - это номер учетной записи пользователя, а я вложил их данные в другой объект.Я хочу добавить других пользователей из поля ввода. Я принимаю имя пользователя, адрес и тип учетной записи.

Я хочу добавить данные в мой объект Object сразу после других моих пользователей.Я уже пытался добавить, но это дает мне ошибку .append не является функцией.

Ответы [ 4 ]

0 голосов
/ 25 сентября 2018

Вы можете следовать по этому пути:

let users = {
    142201801: {
        name: "Pankaj Jaiswal",
        address: "Om sai rcm shopy , 400089",
        accountType: "Saving",
        deposits: 20000,
        withdraws: 15000,
        balance: 5000
    },
    142201802: {
        name: "John Deo",
        address: "Om sai rcm shopy , 400089",
        accountType: "Saving",
        deposits: 20000,
        withdraws: 15000,
        balance: 5000
    }
};
let accountNumber_inital = 142201805;
function add_user(id,name,address,accountType,deposits,withdraws,balance){
    var obj = {};
    obj.name = name;
    obj.address = address;
    obj.accountType = accountType;
    obj.deposits = deposits;
    obj.withdraws = withdraws;
    obj.balance = balance;
    //check id
    if(users.hasOwnProperty(id)===true){
        //id exist, let update
        Object.assign(users.id,obj);
    }else{
        //id not exist, let add
        users[id] = obj;
    }
}
add_user(accountNumber_inital+1,"new John Deo", "new Om sai rcm shopy , 400089", "new Saving", 20000, 15000, 6000);
console.log(users);
0 голосов
/ 25 сентября 2018

Вы не можете append, так как это объект, но вы можете использовать Object.assign https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/assign, чтобы добавить свой вновь созданный объект

Или просто сделать users[accountNumber] = {yourObject}

0 голосов
/ 25 сентября 2018

без append вы можете добавить новый элемент (пользователя) к текущему объекту (пользователям), как показано ниже.

function accountMaker() {
    let accountNumber = accountNumber_inital + 1;
    let name = document.getElementById("userName").value;
    let address = document.getElementById("userAddress").value;
    let type = document.getElementById("accoutType").value;
    console.log("Account made");

    // add to the users dictionary

    users.accountNumber = {
        name: name ,
        address: address ,
        accountType: type ,
        deposits: 0,
        withdraws: 0,
        balance: 0
    }
}
0 голосов
/ 25 сентября 2018

У вас есть объект JavaScript, а не список или массив, поэтому вы не можете использовать его.Однако вы можете определить новый ключ со связанным значением, например, так:

users[accountNumber] = {
  name,
  address,
  accountType: type,
  deposits: 0,
  withdraws: 0,
  balance: 0
};

И если вы хотите удалить объект, вы можете сделать

delete users[accountNumber]

Важно помнить, что JavaScriptтакие объекты, как ваш, эффективно действуют как словарь (пары ключ / значение), где массив - это просто список.Если вам нужно поведение списка, вы можете слегка изменить определение объекта, чтобы оно выглядело так:

let users = [
  {
    accountNumber: '123',
    otherFields: ''
  }
];

users.push({accountNumber: '1234', otherFields: 'test'});

Однако тогда вы потеряете возможность прямого доступа к объекту по номеру учетной записи, все зависит от того, чтонаилучшим образом соответствует вашим требованиям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...