如何让JavaScript函数仅处理数组首个元素?当前函数误取最后项
解决方案
要让函数仅处理数组的首个元素,你有两种简洁的修改方式:
方式一:直接获取首个元素(推荐)
完全去掉循环,直接访问数组索引0对应的元素,代码更高效清晰:
var arrElements = [ { "name": "Electron", "eventdate": "" }, { "name": "Falcon 9 B5", "eventdate": "" }, { "name": "New Shepard", "eventdate": "" }, { "name": "SpaceShipTwo", "eventdate": "" }, { "name": "Gaofen 14", "eventdate": "" } ]; function setAllEvenDates(arrEvents) { // 先判断数组非空避免报错,再取第一个元素 if (arrEvents.length > 0) { setEventDate(arrEvents[0].name, arrEvents[0].eventdate); } }
方式二:修正现有循环逻辑
如果一定要保留循环,确保只执行一次循环体即可(你原代码里的break其实已经能实现,但如果之前没加break导致遍历到最后一项,加上break就可以):
var arrElements = [ { "name": "Electron", "eventdate": "" }, { "name": "Falcon 9 B5", "eventdate": "" }, { "name": "New Shepard", "eventdate": "" }, { "name": "SpaceShipTwo", "eventdate": "" }, { "name": "Gaofen 14", "eventdate": "" } ]; function setAllEvenDates(arrEvents) { for (var i = 0; i < arrEvents.length; i++) { setEventDate(arrEvents[i].name, arrEvents[i].eventdate); // 执行一次后立刻终止循环,只处理第一个元素 break; } }
说明:如果你的原函数没有break语句,循环会遍历完所有元素,最终setEventDate会执行最后一项,这就是你看到“返回最后一项”的原因。加上break或者直接取索引0的元素,就能只处理首个元素。
内容的提问来源于stack exchange,提问作者Cesare Mannino
相关产品推荐
相关产品推荐

