Tôi có một mảng với tài sản, lấy sau ví dụ:Sum của thuộc tính đối tượng trong một mảng
var arrayPeople = [
{
name: 'joe',
job: 'programmer',
age: 25,
},
{
name: 'bob',
job: 'plumber',
age: 30,
};
];
Tôi muốn tạo ra một chức năng mà sẽ trở lại lứa tuổi trung bình của họ, đây là những gì tôi có nghĩa là hiện không làm việc
var ageAverage = function(array) {
var age = 0, average;
for (var i = 0; i < array.length; i++) {
age += array[i].age;
}
average = age/array.length;
return average;
};
Những gì tôi nhận được khi chạy chức năng này là Not A Number
Nhưng những gì tôi có thể nhận được để làm việc là:
var ageAverage = function(array) {
var age = 0, average;
for (var i = 0; i < array.length; i++) {
age = array[0].age;
}
average = age/array.length;
return average;
};
Sự khác biệt tinh tế ở đây là tôi đã lấy đi + = và chỉ cần thực hiện nó =, và tôi đã lấy đi việc sử dụng các biến của chúng tôi i và chỉ cho nó chỉ mục đầu tiên của mảng. Vì vậy, khi làm điều này, tôi biết rằng hàm này thay thế một cách chính xác mảng tham số với arrayPeople, nhưng có điều gì đó sai trong vòng lặp của tôi, đó là ngăn tôi trở thành 0 và 1 (các chỉ mục của arrayPeople).
P.S. Tôi đang cố gắng làm điều này một mình, và tôi không tìm kiếm ai đó để giải quyết vấn đề cho tôi, tôi thực sự đánh giá cao một số gợi ý về những gì cần sửa chữa hoặc có thể là một khái niệm tôi cần nghiên cứu. vấn đề này.
Cảm ơn !!
Hãy thử chuyển array [i] .age thành một số. Cũng khởi tạo các biến, nó là thực hành tốt. Không sử dụng mảng như một tên của một biến, trong một số ngôn ngữ nó là một từ dành riêng. Ngoài ra kiểm tra mảng của bạn của các đối tượng, có một số sai lầm (dấu phẩy và dấu chấm phẩy) – acontell