I am trying to iterate over the variable pieces
, but somehow it is not triggering. In the function below, pieces.length
turns 4, but piecesNew
turns []
- moreover console.log(i)
is never reached.
What is happening?
self.reworkPieces = function(pieces) {
var piecesNew = [];
console.log(pieces.length)
for (var i; i <= pieces.length; i++) {
console.log(i)
piecesNew[i] = {
c: pieces[i].r,
r: pieces[i].c,
p: i
}
}
console.log(piecesNew)
return piecesNew;
};
undefined
is not less than or greater than any number.
var i; // undefined
i < 10; // false
i > 10; // false
You simply need to make sure i
is equal to 0
.
You also want i
to never be equal to pieces.length
so use <
instead of <=
(the last index of an array is always length - 1
, eg an array of length 3 has indexes 0, 1 and 2 – the first index is always 0, not 1)
So:
for (var i = 0; i < pieces.length; i++) {
...
define value for variable i, var i = 0
self.reworkPieces = function(pieces) {
var piecesNew = [];
console.log(pieces.length)
for (var i = 0; i <= pieces.length; i++) {
console.log(i)
piecesNew[i] = {
c: pieces[i].r,
r: pieces[i].c,
p: i
}
}
console.log(piecesNew)
return piecesNew;
};
self.reworkPieces = function(pieces) {
var piecesNew = [];
console.log(pieces.length)
for (var i = 0; i <= pieces.length; i++) {
console.log(i)
piecesNew[i] = {
c: pieces[i].r,
r: pieces[i].c,
p: i
}
}
console.log(piecesNew)
return piecesNew;
};
Change:
for (var i; i <= pieces.length; i++)
To:
for (var i = 0; i < pieces.length; i++)
Initialize var i = 0 initially then it will work
self.reworkPieces = function(pieces) {
var piecesNew = [];
console.log(pieces.length)
for (var i = 0; i <= pieces.length - 1; i++) {
console.log(i)
piecesNew[i] = {
c: pieces[i].r,
r: pieces[i].c,
p: i
}
}
console.log(piecesNew)
return piecesNew;
};
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.