Đã hỏi 6 năm, 5 tháng trước 6 years, 5 months ago
Đã xem 4k lần 4k times
Tôi hoàn toàn mới với JavaScript. Tôi đang học cách viết các chức năng lần đầu tiên và tôi bị mắc kẹt với cái này. Xin vui lòng bạn có thể giúp tôi tìm ra lý do tại sao vòng lặp của tôi chỉ lặp lại trên phần tử đầu tiên của mảng chứ không phải các phần khác.
Cảm ơn sự giúp đỡ của bạn.
Xem mã:
Tôi đang cố gắng viết một hàm lấy đầu vào một mảng số và trả về một mảng mới chứa từng số từ mảng đầu vào, tăng thêm một.
function incrementEach [myArray] {
var newArray = [];
for [var i = 0; i < myArray.length; i++] {
newArray.push[myArray + 1];
return newArray;
};
};
var nuArray = incrementEach [[23, 34, 56, 67]];
log [nuArray];
The result I get after running this code is: '[24]'
Chỉ có yếu tố đầu tiên trong mảng được tăng lên và in. Có gì đó không ổn với vòng lặp của tôi nhưng tôi không thể tìm ra nó. Làm ơn giúp tôi!
Khi được hỏi ngày 3 tháng 5 năm 2016 lúc 21:09May 3, 2016 at 21:09
1
Mã của bạn có một vài vấn đề:
- Trong cuộc gọi NewArray.push của bạn, bạn đang đẩy toàn bộ mảng + 1 thay vì mục riêng lẻ + 1.
- Bạn đang trở lại trong vòng lặp của bạn, điều đó có nghĩa là nó hoàn toàn không phải là một vòng lặp và chỉ được chạy một lần.
Đây là mã của bạn với các bản sửa lỗi tại chỗ:
function incrementEach [myArray] {
var newArray = [];
for [var i = 0; i < myArray.length; i++] {
newArray.push[myArray[i] + 1];
};
return newArray;
};
var nuArray = incrementEach [[23, 34, 56, 67]];
log[nuArray];
Bạn cũng có thể sử dụng chức năng bản đồ để thực hiện việc này với nhiều mã ít hơn:
var nuArray = [23, 34, 56, 67].map[function[item] {
return item + 1;
}];
Đã trả lời ngày 3 tháng 5 năm 2016 lúc 21:13May 3, 2016 at 21:13
Gabriel McAdamsgabriel McAdamsGabriel McAdams
55.1k10 Huy hiệu vàng60 Huy hiệu bạc76 Huy hiệu đồng10 gold badges60 silver badges76 bronze badges
6
Bạn cần lấy phần tử từ mảng:
newArray.push[myArray[i] + 1];
Đã trả lời ngày 3 tháng 5 năm 2016 lúc 21:10May 3, 2016 at 21:10
Omarjmhomarjmhomarjmh
13.1k6 Huy hiệu vàng32 Huy hiệu bạc41 Huy hiệu đồng6 gold badges32 silver badges41 bronze badges
1
Bạn có thể muốn
function incrementEach [myArray] {
var newArray = [];
for [var i = 0; i < myArray.length; ++i] {
newArray.push[myArray[i] + 1]; // i-th element
}
return newArray; // Return at the end
}
Tuy nhiên, nó sẽ đơn giản hơn như thế này:
[23, 34, 56, 67].map[n => n+1];
Đã trả lời ngày 3 tháng 5 năm 2016 lúc 21:13May 3, 2016 at 21:13
Gabriel McAdamsgabriel McAdamsOriol
55.1k10 Huy hiệu vàng60 Huy hiệu bạc76 Huy hiệu đồng57 gold badges409 silver badges493 bronze badges
var arr
function incrementEach [myArray] {
for [var i = 0; i < myArray.length; i++] {
myArray[i] += 1
};
return myArray
};
arr = incrementEach[[23, 34, 56, 67]];
log[arr];
Bạn cần lấy phần tử từ mảng:May 3, 2016 at 21:17
Đã trả lời ngày 3 tháng 5 năm 2016 lúc 21:10Bryce Drew
Omarjmhomarjmh1 gold badge13 silver badges25 bronze badges
13.1k6 Huy hiệu vàng32 Huy hiệu bạc41 Huy hiệu đồng
var increased = [1, 2, 3].map[function[item, index] {
return item + 1;
}];
Bạn có thể muốn
function increaseValues[arr, amount] {
return arr.map[function[item] {
return item + amount;
}];
}
// increase array values by 5
increaseValues[[1,2,4], 5];
Tuy nhiên, nó sẽ đơn giản hơn như thế này:May 3, 2016 at 21:20
Orioloriolgearsdigital
258K57 Huy hiệu vàng409 Huy hiệu bạc493 Huy hiệu Đồng6 gold badges43 silver badges72 bronze badges
Đã trả lời ngày 3 tháng 5 năm 2016 lúc 21:17
Bryce Drewbryce Drew
4.9571 Huy hiệu vàng13 Huy hiệu bạc25 Huy hiệu Đồng
Trường hợp sử dụng tốt nhất cho .map[]
. Tạo ra một mảng mới với kết quả gọi chức năng được cung cấp trên mọi yếu tố trong mảng này.
Một chức năng có thể trông giống như:May 3, 2016 at 21:12
2