Javascript forEach()通过数组:如何获取上一项和下一项
Javascript forEach() through an array: how to get the previous and next item?
假设我们有一个对象数组,如:
var fruits = [ {name:"banana", weight:150},{name:"apple", weight:130},{name:"orange", weight:160},{name:"kiwi", weight:80} ]
我想遍历水果,每次都告诉当前、上一个和下一个水果的名称。我会做一些类似的事情:
fruits.forEach(function(item,index) {
console.log("Current: " + item.name);
console.log("Previous: " + item[index-1].name);
console.log("Next: " + item[index-1].name);
});
但很明显,它不适用于下一项和前一项。。。知道吗?
请注意,我不想使用经典的循环
(对于i=0;i
非常感谢!
它不起作用,因为item不是数组,所以我们不能写item[index-1].name。相反,我们需要使用水果[index-1]。此外,数组的第一个元素将没有上一个项,最后一个元素将不会有下一个项。下面的代码片段应该适合您。
var fruits = [{
name: "banana",
weight: 150
}, {
name: "apple",
weight: 130
}, {
name: "orange",
weight: 160
}, {
name: "kiwi",
weight: 80
}]
fruits.forEach(function(item, index) {
console.log("Current: " + item.name);
if (index > 0) {
console.log("Previous: " + fruits[index - 1].name);
}
if (index < fruits.length - 1) {
console.log("Next: " + fruits[index + 1].name);
}
});
fruits.forEach((item, index, arr) => {
console.log("Current: " + item.name);
console.log("Previous: " + ((0 === index)? "START" : arr[index-1].name));
console.log("Next: " + ((arr.length - 1 === index)? "END" : arr[index+1].name));
});
对于第一个和最后一个项目,您可以记录END,也可以使其成为旋转木马。
选项1:标记开始和结束:
fruits.forEach(function(item,index) {
console.log("Current: " + item.name);
console.log("Previous: " + (0 == index)? "START" : fruits[index-1].name);
console.log("Next: " + (fruits.length - 1 == index)? "END" : fruits[index+1].name);
});
选项2:转盘
fruits.forEach(function(item,index) {
console.log("Current: " + item.name);
console.log("Previous: " + (0 == index)? fruits[fruits.length - 1].name : fruits[index-1].name);
console.log("Next: " + (fruits.length - 1 == index)? fruits[0].name : fruits[index+1].name);
});
fruits.forEach(function(item,index) {
console.log("Current: " + item.name);
if (index > 0) {
console.log("Previous: " + fruits[index-1].name);
}
if (index < (fruits.length - 1)) {
console.log("Next: " + fruits[index+1].name);
}
});
相关文章:
- 如何从对象数组中获取最后一项
- 为什么只有最后一项显示,而不是全部显示
- 删除最后一项jquery
- $q.all当输入数组中的一项不是promise时,Typescript检查器失败
- emberjs一次获取所有表单字段/值
- 为什么我的“for”循环只获取 html 中的最后一项
- 使用循环到DOM的列表项获取逗号
- 如何一次获取一个p元素的内容
- 如何在 visjs 时间轴中按时间顺序获取 getVisibleItems(或如何获取上一项)
- 如何按排序键顺序获取对象中的最后一项
- Node.js http.get in 循环仅获取最后一项
- 获取json字符串数组中的下一项
- jQuery从选定项中获取上一项或下一项
- 循环遍历数组中的项目以分配 data-id,但仅获取数组中的最后一项
- JQuery 从 data() 数组中获取最后一项的旁边
- 在数组中获取下一项
- 获取RadioButtonList中的每一项
- Javascript forEach()通过数组:如何获取上一项和下一项
- 使用迭代器使用标志获取数组中的下一项
- 总是获取数组中的最后一项,我需要 JavaScript 闭包吗?