如何从一个基于另一个数组的数组中获取值?
问题描述:
所以,我试图找出一种情况,我会填充一个数组(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
点?
答
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'更好,因为它的循环更少? –
答
改为使用for(i=0; i < a.length; i++)
!正确的语法是成功的关键!谢谢@Superdrac
使用 “” 在您的for循环 – Superdrac
这是非常derpy我。谢谢! –