2016-08-04 97 views
1

所以,我試圖找出一種情況,我會填充一個數組(b[])來自另一個數組(a[])的索引號,其元素滿足特定條件(數組b將是基於數組a的索引號一組圖像,並且當寬度大於高度時將填充b)。如何從一個基於另一個數組的數組中獲取值?

所以,我想出了一個假設的函數,希望得到一個數組輸出,我將從a[]獲得與b[]的值對齊的列表。毋庸置疑,這兩種嘗試都沒有帶來任何有價值的東西。

var a = ['ab', 'bc', 'cd', 'de', 'ef', 'fg', 'gh', 'hi']; 
var b = [2, 4, 5]; 


var d = function(a, b) { 
    var func1 = []; 
    var func2 = []; 

    for(i = 0; i > b.length; i++) { 
    func1.push(a[b[i]]); 
    } 

    console.log('func1 = ' + func1); // 'func1 = []' 

    for(i=0; i > a.length; i++) { 
    if(b.indexOf(a.indexOf(a[i])) > -1) { 
     func2.push(a[i]) 
    } 
    } 
    console.log('func2 = ' + func2); // 'func2 = []' 
} 


d(a,b) // Ideally outputs ['cd', 'ef', 'fg'] 

這是功能範圍的問題,還是我失去的.push點?

+2

使用 「<」,而不是 「>」 在您的for循環 – Superdrac

+1

這是非常derpy我。謝謝! –

回答

1

for循環中的比較是倒退的。他們應該是這樣的:

for(i = 0; i < b.length; i++) { 
    func1.push(a[b[i]]); 
    } 

    console.log('func1 = ' + func1); // 'func1 = []' 

    for(i=0; i < a.length; i++) { 
    if(b.index(a.indexOf(a[i])) > 1) { 
     func2.push(a[i]) 
    } 
    } 

此外,b.index不是函數。我假設你的意思的indexOf:

var a = ['ab', 'bc', 'cd', 'de', 'ef', 'fg', 'gh', 'hi']; 
var b = [2, 4, 5]; 


var d = function(a, b) { 
    var func1 = []; 
    var func2 = []; 

    for(i = 0; i < b.length; i++) { 
    func1.push(a[b[i]]); 
    } 

    console.log('func1 = ' + func1); // 'func1 = []' 

    for(i=0; i < a.length; i++) { 
    if(b.indexOf(a.indexOf(a[i])) > 1) { 
     func2.push(a[i]) 
    } 
    } 
    console.log('func2 = ' + func2); // 'func2 = []' 
} 


d(a,b) // Ideally outputs ['cd', 'ef', 'fg'] 

此輸出:

func1 = cd,ef,fg 
func2 = fg 
+0

它被認爲是'if(b.indexOf(a.indexOf(a [i]))> -1)'。在效率方面,'func1'比'func2'更好,因爲它的循環更少? –

0

改爲使用for(i=0; i < a.length; i++)!正確的語法是成功的關鍵!謝謝@Superdrac

相關問題