Массив манипулирования объектами в JavaScript - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть пустой массив внутри объекта, подобный этому,

const account = {
name: "David Reallycool",
expenses: []

}

, и мне нужно создать функцию для добавления расходов в пустой массив, результат мне нужен,

const account = {
name: "David Reallycool",
expenses: [
    {
        descrition: "Rent",
        amount: 1000
    },
    {
        description: "Coffee",
        amount: 2.50
    }
]

Как я могу им манипулировать?

Ответы [ 4 ]

0 голосов
/ 27 сентября 2018
const account = {
    name: "David Reallycool",
    expenses: []
}

function addExpense(description, amount){
    account.expenses.push({"description": description, "amount":amount});
}


addExpense("Test", 500);

console.log(account);
0 голосов
/ 27 сентября 2018

Для этого нужно знать две вещи:

  1. Изменение значения в массиве отражает изменение исходного массива, если вы передаете массив как параметр функции, так как он передается по ссылке.
  2. Вам необходимо использовать функцию push() прототипа Array, чтобы добавить этот объект в массив expenses.

function addExpense(expensesArray, expense){
  expensesArray.push(expense);
}

const account = {
  name: "David Reallycool",
  expenses: []
};
var expense = {
  descrition: "Rent",
  amount: 1000
}
addExpense(account.expenses, expense);
var expense = {
  descrition: "Coffee",
  amount: 2.5
}
addExpense(account.expenses, expense);

console.log(account);
0 голосов
/ 27 сентября 2018

Поскольку объект (учетная запись) передается не как копия, вы можете без проблем манипулировать им внутри своей функции.

function addExpenses(inputAccount){
    inputAccount.expenses = [
        {
            descrition: "Rent",
            amount: 1000
        },
        {
            description: "Coffee",
            amount: 2.50
        }
    ]
}
// will be called with
addExpenses(account);
// here account will have expenses content
0 голосов
/ 27 сентября 2018
const addExpense = (expense) => {
  account.expenses.push(expense)
}
// use like this
addExpense({ description: 'Rent', amount: 1000 })
addExpense({ description: 'Coffee', amount: 2.5 })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...