将一个数组中的数字与另一个数组 Javascript 的索引进行比较
Posted
技术标签:
【中文标题】将一个数组中的数字与另一个数组 Javascript 的索引进行比较【英文标题】:Comparing numbers from one array with indexing of another array Javascript 【发布时间】:2017-07-03 08:55:34 【问题描述】:只是想知道这样的事情是否可以完成以及如何完成。我的目标是从一个数组中取出所有数字并将它们与另一个数组的索引进行比较,最后打印元素。
例子:
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 一起工作,这样我们才能真正看到如上所示的预期结果。我会很感激任何帮助
【问题讨论】:
【参考方案1】:您可以简单地遍历索引数组,然后使用它的值:
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]]);
【讨论】:
由于某种原因,它在我的 .html 和该网站上也不起作用:codepen.io/anon/pen/vgPJWM?editors=0010 /////这正是我想要做的,但它没有出现就像你的代码一样,根本看不到任何错误【参考方案2】:您可以对数据使用数组并检查给定索引处的数据是否存在。然后进行输出。
var myindex = [2, 0],
array = [["text", "apple", "sample"], ["book", "phone", "orange"]];
myindex.forEach(number => array[number] && console.log(array[number]));
【讨论】:
你知道为什么它在这里根本不起作用吗? codepen.io/anon/pen/ZLPJxX?editors=0010 /// 仅适用于此处的“sn-p”编辑器。 我不太会使用控制台,但是如果将console.log
替换为document.write
,就会得到想要的结果。【参考方案3】:
这里不需要indexOf
,它会搜索一个数组。您需要通过 index(方括号表示法)访问数组以获取值:
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]));
注意:您在数组构造函数中有错字:它必须是 Array()
,而不是 array()
。其次,不要使用document.write
。
【讨论】:
谢谢,关于访问索引的非常有用的解释 注意:一旦你有 15 点声望(容易获得),你可以vote answers up。另外,别忘了mark one answer as accepted。【参考方案4】:您只需要使用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 中的两个数组变量。你不应该盲目地遵循这里的任何代码,你应该适应你的具体用例。
【讨论】:
部分断线怎么样?我正在寻找这样的东西:(数组 1 第一行)= sample[2] text[0](数组 2 第二行)= orange[2] book[0] 这就像一个魅力,问题是我试图将现有代码修改为一行,但我不明白为什么它不起作用。例如。像这样: //myIndexs.forEach((index) => document.write($array1[index]<br />$array2[index]
));由于那不起作用,我试图操纵您更新的方法并实施不同的方法,因为我不能让自己创建额外的数组,不幸的是没有运气。只是想知道有没有办法?
例如这会起作用,但是有三行,我需要它们是一整行(相应调整,而不仅仅是空格),我不知道该怎么做: 1. myIndexs.forEach((index) => document.写($array1[index]
)); 2. document.write(""); 3. myIndexs.forEach((index) => document.write($array2[index]
));【参考方案5】:
只是为了一些变化和乐趣,你可以这样做;
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]),[]));
【讨论】:
以上是关于将一个数组中的数字与另一个数组 Javascript 的索引进行比较的主要内容,如果未能解决你的问题,请参考以下文章
PHP:如何将一个数组中的键与另一个数组中的值进行比较,并返回匹配项?
如何将 array_intersect() 值与另一个数组中的相应键匹配?