如何在Javascript中列出数组的当前元素

如何在Javascript中列出数组的当前元素,javascript,Javascript,如何遍历数组并返回每个元素的位置?我想写一个函数,返回每个元素及其位置 例如: const fruit = ['Orange', 'Banana', 'Apple'] Return“我最喜欢的水果是:1.橘子,2.香蕉,3.苹果” 这将返回非空情况下所需的字符串: return array.map((fruit, index) => `${index + 1}. ${fruit}`).join(', '); 函数调用依次传递水果名及其索引,每个水果返回一个条目,然后调用.join将其转

如何遍历数组并返回每个元素的位置?我想写一个函数,返回每个元素及其位置

例如:

const fruit = ['Orange', 'Banana', 'Apple']
Return“我最喜欢的水果是:1.橘子,2.香蕉,3.苹果”


这将返回非空情况下所需的字符串:

return array.map((fruit, index) => `${index + 1}. ${fruit}`).join(', ');

函数调用依次传递水果名及其索引,每个水果返回一个条目,然后调用
.join

将其转换为一个逗号分隔的列表,不完全确定您希望在这里返回什么,但数组对象的.indexOf方法可能会有所帮助

例如:

["a","b","c"].indexOf("a");
// returns a result of 0, as in "a" is in position 0 

您可以使用
数组。减少

const-fruit=[“橙色”、“香蕉”、“苹果”];
const requiredString=fruit.reduce(
(acc、curr、index)=>{
返回`${acc}${index+1}${curr},`;
},'行当前为:'//这是acc的默认值
)

console.log(requiredString)您可以使用reduce,如下所示

['Orange', 'Banana', 'Apple'].reduce((sentence, element, index)=>`${sentence} ${index}.${element}`, 'The line is currently:')
为了迎合‘,’。你可以这样做

['Orange', 'Banana', 'Apple'].reduce(
(sentence, element, index, wordsArray)=>`${sentence} ${index}.${element}${(index < wordsArray.length-1)?',':''}`, 'The line is currently:')
['Orange'、'Banana'、'Apple']减少(
(句子,元素,索引,wordsArray)=>`${Session}${index}.${element}${(索引

您可以研究reduce是如何工作的,以使其按您的意愿工作,或者重构它以使其更具可读性,但对于新手级别,通常会使用for循环来处理

var outputString = "My favourite fruit is: ";
for(var i = 0; i < array.length; i++){
    //add the i + 1 and array[i] to output string concatenation +
}
return outputString;
var outputString=“我最喜欢的水果是:”;
对于(var i=0;i

一件棘手的事情是数组从0开始,但您可能不希望输出列表为0。橙色这就是为什么它是i+1,而不仅仅是i。

['one','two','three'].forEach((f,ix)=>console.log(`${ix+1}.${f}```))
在我写了上面的内容之后,OP编辑了他们的问题以提供一点清晰。谢谢@Ric这是我要解决的问题。“构建一个函数current,该函数接受当前人员行并以字符串形式返回当前行;例如,如果“当前行”当前为[“John”、“Peter”],current(当前行)将返回“当前行为:1”。约翰,2岁。Peter“”您可以使用indexOf方法来实现这一点,但由于其他人提供了几种有效的方法来实现您想要的功能,您可能只需要获取其中一种。一个次要的注意事项是,如果您支持较旧的浏览器,那么给出的许多建议将不适用于您,因为它们依赖于ES6。如果这是一个问题(可能不是),您可能希望检查此URL以获得IE11(适用于Windows 7的最现代IE)之类的ES6支持。。公平地说,现在没有人应该使用IE11,我只是提到它,因为我曾经在一个环境中编写过内部web应用程序,而这些应用程序仍然在Windows7上,并且使用IE作为标准浏览器。它比你想象的更普遍(当然也比它应该更普遍!)感谢@Alnitak,参数索引将采用什么作为参数?@YonasTekeste
.map
函数始终将当前元素的索引作为第二个参数传递给回调函数。数组联接比一系列单独的concatention和/或插值更有效。
reduce
是错误的方法在这里它在所有情况下都会留下一个悬空的
。您需要
映射
/
连接
,它只在元素之间插入分隔符。对于
reduce
解决方案,您必须使用reducer函数的第三个“current index”参数来确定是否添加分隔符,此时您肯定已经将解决方案过度复杂化了。我相信,在reduce函数完成后,我们可以简单地删除后面的
,Shubham。如果我想用simple for loop实现这一点怎么办?Yonas,你可以试试这个:这个输出<代码>“当前行是:0.Orange 1.Banana 2.Apple”
,元素之间没有<代码>,
。编辑答案以迎合','
var outputString = "My favourite fruit is: ";
for(var i = 0; i < array.length; i++){
    //add the i + 1 and array[i] to output string concatenation +
}
return outputString;