2017-07-19 25 views
-2

在Javascript中,是循環如此內存密集?我得到一個內存問題時,它應該只循環36次:是'for'循環,所以內存很餓,與es6中的'for'相比?

const suits = ['♥', '♠', '♣', '♦'], 
     ranks = [6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A']; 
var cards = []; 
for (let i = 0; i < suits.length; i++) { 
    for (let j = 0; j < ranks.length; i++) { 
    var colour = 'black'; 
    if (suits[i] === '&hearts;' || suits[i] === '&diam;') { 
     colour = 'red'; 
    } 
    cards.push({ 
     suit : suits[i], 
     rank : ranks[j], 
     colour : colour, 
     value : j+1 
    });    
    } 
} 
console.log(cards); 

https://jsfiddle.net/xntL1ygj/

但這是罰款:

const suits = ['&hearts;', '&spades;', '&clubs;', '&diams;'], 
     ranks = [6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A']; 

let cards = []; 

for (let suit of suits) { 
    for (let rank of ranks) { 
    var colour = 'black'; 
    if (suit === '&hearts;' || suit === '&diam;') { 
     colour = 'red'; 
    } 
    cards.push({ 
     suit : suit, 
     rank : rank, 
     colour : colour, 
     //value : j+1 
    });    
    } 
} 
console.log(cards); 

https://jsfiddle.net/zfktu35t/

+8

內部和外部'for'循環都有'i ++'。內部應該是'j ++'。 – Pointy

+3

*「我遇到了一個記憶問題」*這個問題到底是什麼,你做了什麼來了解它? –

+0

'(let j = 0; j Will

回答

1

const suits = ['&hearts;', '&spades;', '&clubs;', '&diams;'], 
 
     ranks = [6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A']; 
 
var cards = []; 
 
for (let i = 0; i < suits.length; i++) { 
 
    // I fixed your bug below--it used to be i++, not j++ 
 
    for (let j = 0; j < ranks.length; j++) { 
 
    var colour = 'black'; 
 
    if (suits[i] === '&hearts;' || suits[i] === '&diam;') { 
 
     colour = 'red'; 
 
    } 
 
    cards.push({ 
 
     suit : suits[i], 
 
     rank : ranks[j], 
 
     colour : colour, 
 
     value : j+1 
 
    });    
 
    } 
 
} 
 
console.log(cards);

哦,你看,當你

let j = 0; j < ranks.length; i++) 

這個循環將永遠運行下去,因爲j始終爲0搞怪,說。