尝试遍历两个数组并在 JavaScript 中正确格式化它们的输出
Posted
技术标签:
【中文标题】尝试遍历两个数组并在 JavaScript 中正确格式化它们的输出【英文标题】:Trying to loop through two arrays and format their output properly in JavaScript 【发布时间】:2022-01-22 15:07:54 【问题描述】:我是 javascript 新手,我正在学习循环数组。无论如何,我有一组价格和一组名称。我希望输出为:“名称:价格”。例如: 英镑:454 半磅:227 四分之一磅:114 等等……
但是由于某种原因,我得到的输出是每个名称的重复,每个名称旁边都有每个价格,正如您在下面的 sn-p 中看到的那样。我在这里先向您的帮助表示感谢。 :)
const salePrices = [454,227,114,28,14,7,3.5];
const names = ['Pound','Half-Pound','Quarter Pound','Ounce','Half Ounce','Quarter Ounce','Eighth'];
for (let i = 0; i < salePrices.length; i++)
for(let x = 0; x < names.length; i++)
console.log(`$names[x]:$salePrices[i]`)
【问题讨论】:
您正在创建一个无限循环,因为您没有在内部循环中增加x
的值。你不需要两个循环。
【参考方案1】:
你不需要两个循环。一个循环就足以获取index
,然后从中获取names
和salePrices
:
const salePrices = [454, 227, 114, 28, 14, 7, 3.5];
const names = [
"Pound",
"Half-Pound",
"Quarter Pound",
"Ounce",
"Half Ounce",
"Quarter Ounce",
"Eighth",
];
for (let i = 0; i < salePrices.length; i++)
console.log(`$names[i]: $salePrices[i]`);
【讨论】:
感谢您提供此解决方案。有道理。【参考方案2】:是的,这是因为每次外循环迭代一次,内循环就会完全运行。 因此,对于每一个销售价格,names都已满员。
如果两个数组的顺序已经正确,您可以只使用一个 for 循环。
const salePrices = [454, 227, 114, 28, 14, 7, 3.5];
const names = [
"Pound",
"Half-Pound",
"Quarter Pound",
"Ounce",
"Half Ounce",
"Quarter Ounce",
"Eighth",
];
for (var i = 0; i < salePrices.length; i++)
console.log(names[i] + ":" + salePrices[i])
【讨论】:
【参考方案3】:我假设您的意思是在 for 循环中增加 x
而不是 i
。
在第一个 for 循环中,您正在遍历 salePrices
。因此salePrices[i]
会得到你454 -> 227 -> 114 -> 28 -> 14 -> 7 -> 3.5
在第二个 for 循环中,您正在遍历 names
。因此names[x]
会得到你'Pound' -> 'Half-Pound' -> 'Quarter Pound' -> 'Ounce' -> 'Half Ounce' -> 'Quarter Ounce' -> 'Eighth'
但是,第二个 for 循环嵌套在第一个 for 循环中。因此,所有names
都针对每个销售价格进行了迭代。例如:
当i=0
时,会打印:
Pound:454
Half-Pound:454
Quarter Pound:454
etc...
如果您确定names
和salePrices
的长度相同。你可以使用decpk's answer。
您也可以将它们设为对象,以 names
作为键,salePrices
作为值(这可能更适合这种用例)。
const products =
"Pound": 454,
"Half-Pound": 227,
"Quarter Pound": 114,
"Ounce": 28,
"Half Ounce": 14,
"Quarter Ounce": 7,
"Eighth": 3.5,
;
for (const [name, price] of Object.entries(products))
console.log(`$name: $price`);
【讨论】:
以上是关于尝试遍历两个数组并在 JavaScript 中正确格式化它们的输出的主要内容,如果未能解决你的问题,请参考以下文章
循环遍历多维数组以生成新数据并在节点 js / javascript 中追加新的键值
forEach 在javascript中同时循环遍历两个数组[重复]