Вы почти закончили, хороший подход до сих пор.
Во-первых, вы сказали бы "Я хочу создать новый массив, включающий эти два новых свойства" , затем вам следует взгляните на эти супер методы,
Эти методы противоположны друг другу. Таким образом, используя эти методы, вы можете deep-clone ваш массив следующим образом:
let newData = JSON.parse(JSON.stringify(Data));
Обратите внимание, что вы можете устанавливать новые свойства в JS объектах, таких как,
Object.property = value;
Теперь вам нужно установить свойство rate
, затем выполнить
// set the property rate
individualData.rate = rate;
Аналогично, вы можете установить и другие свойства. Кроме того, если вы хотите получить какое-либо свойство, вы можете просто сделать
console.log(Object.property);
Итак, вы можете рассчитать проценты следующим образом
// calculate the interest with the formula
individualData.interest = individualData.principal * individualData.rate * individualData.time / 100;
Мы почти закончили! Наконец, для записи результирующего массива объектов, return
значение
return newData;
const Data = [
{
principal: 2500, //3
time: 1.8
},
{
principal: 1000, //1
time: 5
},
{
principal: 3000, //1
time: 1
},
{
principal: 2000, //2
time: 3
}
];
const interestCalculator = Data => {
// The following method is best to deep-clone an array!
// Very important method for development purpose
let newData = JSON.parse(JSON.stringify(Data));
// here I create a forEach loop
newData.forEach(individualData => {
// here I start the rate with empty string
// NO, rate is integer, so initiate it with a number, eg. 0
let rate = 0;
// use if...else statement to return the rate for each individual Object
if (individualData.principal >= 2500 && individualData.time >= 3) {
rate = 4;
} else if (individualData.principal >= 2500 && individualData.time > 1 && individualData.time < 3) {
rate = 3;
} else if (individualData.principal < 2500 || individualData.time <= 1) {
rate = 2;
} else {
rate = 1;
}
///// I ADDED LINES HERE /////
// set the property rate
individualData.rate = rate;
// calculate the interest with the formula
individualData.interest = individualData.principal * individualData.rate * individualData.time / 100;
});
// return the Data array with rate and interest inserted to each objects
return newData; // very important!
};
console.log('Original array', Data);
console.log('New array', interestCalculator(Data)); // log the returned value
РЕДАКТИРОВАТЬ: Я думаю, что вы забыли добавить второе условие для расчета ставки. Я добавил это в приведенном выше фрагменте. Кроме того, в вашем коде, вы бы опечатали, относительно последнего условия. individualData.principal < 2500
(меньше).