几天前我遇到了这个问题,令人惊讶的是它为我的逻辑思维造成了很多问题。
我们有三个简单的数组:
http
控制台日志中的输出结果如下:
Comments
现在我被告知可以用for循环来解决,但我不知道如何获取数字的位置然后保存这些数字,以便我可以从其他两个数组中选择它们。
它必须是动态的,所以如果我向数组添加更多元素,它会自动生成类似上面提到的三个句子。
这是我从老师那里得到的,所以输入数组必须保持这样。每个数字后面都有一个字符串按升序排列,这就是我们必须弄清楚的模式,所以看起来就像我上面评论过的那样。
答案 0 :(得分:2)
您的问题是奇怪的数据结构。将其转换为可以使用的内容:
var countries = [1, "DK", 2, "USA", 3, "Sweden"];
var languages = [2, "English", 1, "Danish", 3, "Swedish"];
var population = [3, 8000000, 1, 6000000, 2, 3000000000];
var data = {};
function addArray(key, ary) {
for (var i = 0; i < ary.length; i += 2) {
var j = ary[i];
data[j] = data[j] || {};
data[j][key] = ary[i + 1];
}
}
addArray('country', countries);
addArray('language', languages);
addArray('population', population);
document.write("<pre>" + JSON.stringify(data,0,3));
&#13;
如何从此对象获取输出应该是显而易见的。
答案 1 :(得分:1)
虽然IE8及以下版本不支持Array.indexOf,但您可以尝试:
var countries = [1, "DK", 2, "USA", 3, "Sweden"];
var languages = [2, "English", 1, "Danish", 3, "Swedish"];
var population = [3, 8000000, 1, 6000000, 2, 3000000000];
var size = countries.length / 2;
for (var i = 1; i <= size; i++)
{
var country = countries[countries.indexOf(i) + 1];
var lang = languages[languages.indexOf(i) + 1];
var pop = population[population.indexOf(i) + 1];
console.log("In " + country + " people speak " + lang + " and there live " + pop + " people");
}
答案 2 :(得分:0)
你肯定需要使用多个for循环。
除非您想要更改数据的结构(请参阅georg的回答),否则这样的事情应该有效:
for (var i = 0; i < countries.length; i+=2) {
var countryId = countries[i];
var countryName = countries[i+1];
var countryLanguage, countryPopulation;
for (var j = 0; j < languages.length; j+=2) {
if (languages[j] == countryId) countryLanguage = languages[j+1];
}
for (var j = 0; j < population.length; j+=2) {
if (population[j] == countryId) countryPopulation = population[j+1];
}
console.log("In " + countryName + " people speak " +
countryLanguage + " and there live " +
countryPopulation + " people");
}
答案 3 :(得分:-1)
使用2D数组更改逻辑,如
var array = [["DK","English","8000000"],["USA","Danish","6000000"],["Sweden","Swedish","2000000"]];
由此您可以轻松找到您的价值。
答案 4 :(得分:-1)
console.log("In USA people speak " + languages[(languages.indexOf(countries[countries.indexOf("USA")-1])
+ 1)] + " and there live " +
population[(population.indexOf(countries[countries.indexOf("USA")-1])+ 1)] + " people");
注意:这是一个不先操作数据的解决方案! 这适用于第一个,其他的将是相同的。不确定是否有更好的方法,但这是我的第一直觉......