2016-08-17 214 views
0

我有以下代碼:JavaScript函數返回數組

var disArray = ['red','red','green','green','green','blue','blue','blue','blue','blue']; 
var otherArray = []; 


function takeOut() { 
    for (i = 0; i < 3; i++) { 
     var randItem = disArray[Math.floor(Math.random()*disArray.length)]; 
     otherArray.push(randItem); 
    } 
    return otherArray; 
} 

takeOut(disArray) 
console.log(otherArray) 

我想在otherArray返回的元素,當它被調用的函數,但我得到的錯誤undefined。它只適用於我console.logotherArray。有什麼辦法可以讓我的函數返回數組而不使用console.log

+1

otherArray =取出(混亂); console.log(otherArray); – user2249160

+1

'otherArray'不在函數的範圍內。 –

+0

'undefined'不是錯誤。你甚至沒有任何錯誤。 – Xufox

回答

1

您可以使用本地變量。

function takeOut() { 
 
    var otherArray = [], i, randItem; 
 
    for (i = 0; i < 3; i++) { 
 
     randItem = disArray[Math.floor(Math.random() * disArray.length)]; 
 
     otherArray.push(randItem); 
 
    } 
 
    return otherArray; 
 
} 
 

 
var disArray = ['red','red','green','green','green','blue','blue','blue','blue','blue'], 
 
    result = takeOut(disArray); 
 

 
console.log(result);

對於可重複使用的功能,你可以添加一些參數的功能,如數組和計數,你所需要的。

function takeOut(array, count) { 
 
    var result = []; 
 
    while (count--) { 
 
     result.push(array[Math.floor(Math.random() * array.length)]); 
 
    } 
 
    return result; 
 
} 
 

 
var disArray = ['red','red','green','green','green','blue','blue','blue','blue','blue'], 
 
    result = takeOut(disArray, 5); 
 

 
console.log(result);

實施例用於調用takeOut多次,並且將結果存儲在數組中。

function takeOut(array, count) { 
 
    var result = []; 
 
    while (count--) { 
 
     result.push(array[Math.floor(Math.random() * array.length)]); 
 
    } 
 
    return result; 
 
} 
 

 
var disArray = ['red','red','green','green','green','blue','blue','blue','blue','blue'], 
 
    i = 7, 
 
    result = [] 
 

 
while (i--) { 
 
    result.push(takeOut(disArray, 5)); 
 
} 
 

 
console.log(result);

+0

更具體地說,你正在使用'takeOut()'的返回值並將它傳遞給'console.log'。 –

+0

沒錯。結果集現在獨立於前一個變量'otherArray'。 –

+0

您還應該在函數聲明中添加'disArray'作爲參數,以便它可以使用任何數組作爲參數,而不僅僅是全局。現在傳遞'takeOut()'參數什麼也不做。 – 4castle

-1

基本上以取出()的調用將返回使用返回的值。如果要在控制檯上打印,則需要將其傳遞給console.log()fn。另一種方法是分配fn呼叫即。 takeOut()給一個變量並將變量指向控制檯或在別處使用。

var disArray = ['red','red','green','green','green','blue','blue','blue','blue','blue']; 
 
var otherArray = []; 
 

 

 
function takeOut() { 
 
    for (i = 0; i < 3; i++) { 
 
     var randItem = disArray[Math.floor(Math.random()*disArray.length)]; 
 
     otherArray.push(randItem); 
 
    } 
 
    return otherArray; 
 
} 
 

 
takeOut() //need to utilize the returned variable somewhere. 
 
console.log(takeOut()) //prints to stackoverflow.com result // inspect browser console