Функция добавления объекта в массив возвращает неопределенный

#javascript #arrays #object #push

#язык JavaScript #массивы #объект #толкать

Вопрос:

У меня есть следующий код, в котором я пытаюсь добавить некоторые объекты в массив с двумя существующими объектами с помощью функции, но он всегда возвращает неопределенное значение, и я не знаю, как его решить.

 let compte = {  iban: "ES79 2100 0813 6101 2345 6789",   saldo_inicial: 15000,   operacions: [{  quantitat: 1200,  concepte: 'X',  data_operacio: new Date(Date.now()),  }, {  quantitat: -100,  concepte: 'X',  data_operacio: new Date(Date.now()),  }],   afegir_operacio: function(quantitat, concepte, data_operacio) {  compte.operacions.push({  quantitat: quantitat,  concepte: concepte,  data_operacio: data_operacio  });  console.log(compte.operacions);  } }  compte.afegir_operacio({  quantitat: -100,  concepte: "Factura",  data_operacio: "3-10-2021" }); compte.afegir_operacio({  quantitat: -50,  concepte: "Compra" }); 

Комментарии:

1. Я удалил тег Java, так как он кажется не связанным с вопросом.

2. compte.operacions является массивом, он не имеет свойства quantitat или concepte или data_operacio . Элементы внутри этого массива обладают этими свойствами. Но неясно, кто из них (если таковые имеются?) следует использовать. Или вместо этого следует просто использовать параметры функций?

3. Вы должны использовать аргументы, которые вы передаете в функцию!

Ответ №1:

Вы получаете undefined , потому что данные, которые вы пытаетесь добавить, — это не то, что вы передаете функции. Взгляните на исправления. Если вы не передадите значение для данного свойства, вы получите undefined значение для этого свойства, если не определите default значение:

 let compte = {  iban: "ES79 2100 0813 6101 2345 6789",    saldo_inicial : 15000,    operacions: [{  quantitat: 1200,  concepte: 'X',  data_operacio: new Date(Date.now()),  }, {  quantitat: -100,  concepte: 'X',  data_operacio: new Date(Date.now()),  }],    afegir_operacio: function ({quantitat, concepte, data_operacio = "default_value"}) {  this.operacions.push({quantitat: quantitat, concepte: concepte, data_operacio: data_operacio});  console.log(this.operacions);  }  }    compte.afegir_operacio({ quantitat: -100 , concepte: "Factura", data_operacio: "3-10-2021" });  compte.afegir_operacio({ quantitat: -50, concepte: "Compra" });