2016-08-04 96 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

相关问题