2017-02-14 45 views
1

只是想知道是否可以完成这样的事情以及如何完成。我的目标是从一个数组中取出所有数字,并将它们与另一个数组的索引进行比较,最后打印这些元素。将一个数组中的数字与另一个数组的索引进行比较Javascript

实施例:

var myindex = new Array(2, 0); 

var array1 = new Array("text", "apple", "sample") 
var array2 = new array("book", "phone", "orange") 

myindex.forEach(number => document.write(array1.indexOf(number))) 

预期结果:以下将被打印:样品橙色文本书

第一个问题:所有被示出的是-1错误,这意味着我认为:在没有数数组,但有一个,所以我不明白? 第二个问题:我还需要实现array2与array1一起工作,以便我们可以实际看到如上所示的预期结果。我希望得到任何帮助

回答

0

你可以简单地通过索引数组循环,然后使用它的值:

var myIndex = [2,0]; 
 
var array1 = new Array("text", "apple", "sample"); 
 
var array2 = new Array("book", "phone", "orange"); 
 

 
for (var i = 0; i < myIndex.length; i++){ 
 
    console.log(array1[myIndex[i]] + " " + array2[myIndex[i]]); 
 
}

+0

出于某种原因,它不会在我的.html和该网站上的工作,以及:http://codepen.io/anon/pen/vgPJWM?editors=0010 // ///这正是我想要做的,但它根本不显示,就像你的代码一样,看不到任何错误 – Jay

0

你可以使用一个阵列中的数据,并检查是否在数据给定的索引存在。然后制作输出。

var myindex = [2, 0], 
 
    array = [["text", "apple", "sample"], ["book", "phone", "orange"]]; 
 

 
myindex.forEach(number => array[number] && console.log(array[number]));

+0

你知道为什么它在这里不工作吗? http://codepen.io/anon/pen/ZLPJxX?editors=0010 ///只能在这里的'snippet'编辑器中使用。 – Jay

+0

我并没有太多地使用控制台,但是如果你用'document.write'替换'console.log',你会得到想要的结果。 –

0

你不需要indexOf这里,它搜索的数组。你需要通过指数(方括号)来访问数组来获取值:

var myindex = new Array(2, 0); 
 

 
var array1 = new Array("text", "apple", "sample") 
 
var array2 = new Array("book", "phone", "orange") 
 

 
myindex.forEach(number => console.log(array1[number], array2[number]));

NB:你曾在数组构造一个错字:它需要Array() ,而不是array()。其次,不要使用document.write

+0

感谢,真正有用的解释,访问索引 – Jay

+0

注:一旦你有15点的声誉(容易得到),你可以[投票答案](http://stackoverflow.com/help/privileges/vote-up)。另外,不要忘记[将一个答案标记为已接受](http://stackoverflow.com/help/someone-answers)。 – trincot

0

您只需要使用array[index]语法访问数组元素。

var myIndexs = [2, 0]; 
 

 
var array1 = ["text", "apple", "sample", "book"]; 
 
var array2 = ["book", "phone", "orange", "text"]; 
 

 
myIndexs.forEach((index) => document.write(`${array1[index]} ${array2[index]} `));

另外,使用[]语法来创建数组,而不是Array()https://coderwall.com/p/h4xm0w/why-never-use-new-array-in-javascript

如果你想在两行的结果,以及它种取决于你的使用情况,您只是真的想要写入HTML,你可以简单地这样做:

var myIndexs = [2, 0]; 
 

 
var array1 = ["text", "apple", "sample", "book"]; 
 
var array2 = ["book", "phone", "orange", "text"]; 
 

 
const results1 = []; 
 
const results2 = []; 
 

 
myIndexs.forEach((index) => { 
 
    // Here you might want to validate if array1[index] exists 
 
    results1.push(array1[index]); 
 

 
    // Here you might want to validate if array2[index] exists 
 
    results2.push(array2[index]); 
 
}); 
 

 
document.write(`${results1}<br />${results2}`);

但是,它可能取决于您的使用情况。我可能希望在html中创建两个不同的节点目标,并将每个结果写入不同的目标。您可能只需要javascript中的两个数组变量。你不应该盲目地遵循任何代码,你应该适应你的具体用例。

+0

局部断线如何?我正在寻找这样的东西: (array 1 first row)= sample [2] text [0] (array 2 second row)= orange [2] book [0] – Jay

+0

这就像一个魅力,东西是我试图修改现有的代码在一行内,我不明白为什么它不会工作。例如。像这样:\t //myIndexs.forEach((index)=> document.write('$ {array1 [index]}
$ {array2 [index]}'));由于这不起作用,我试图操纵你更新的并且实现不同的方法,因为我不能让自己创建更多的数组,但不幸的是没有运气。只是想知道有没有办法? – Jay

+0

例如这将工作,但有三条线,我需要他们成为一个完整的行(相应地调整,不仅与空间),我不知道该怎么做:1. \t myIndexs.forEach((index)=> document .write('$ {array1 [index]}')); 2. \t document.write(“
”); 3. \t myIndexs.forEach((index)=> document.write('$ {array2 [index]}')); – Jay

0

只是为了一些变化和乐趣,你可能会这样做;

var myIndex = new Array(2, 0), 
 
    array1 = new Array("text", "apple", "sample"), 
 
    array2 = new Array("book", "phone", "orange"); 
 
console.log.apply(console, myIndex.reduce((p,c) => p.concat(array1[c],array2[c]),[]));

相关问题