如何从Javascript数组中获取顺序元素?
我有一个Javascript数组:如何从Javascript数组中获取顺序元素?,javascript,Javascript,我有一个Javascript数组: var cars = ["Saab", "Volvo", "BMW", "Volkswagen", "Fiat"]; 我知道我可以通过如下索引获得这些元素: cars[2] // => "BMW" 但是我怎样才能同时得到三个连续的元素呢 getThreeCarsByIndex(4) // => ["Fiat"
var cars = ["Saab", "Volvo", "BMW", "Volkswagen", "Fiat"];
我知道我可以通过如下索引获得这些元素:
cars[2] // => "BMW"
但是我怎样才能同时得到三个连续的元素呢
getThreeCarsByIndex(4) // => ["Fiat", "Saab", "Volvo"]
感谢您的帮助。您可以定义一个自定义函数,并检查给定的计数+给定的索引是否大于数组的
长度
const getElementsFromIndex=(arr,ind,n)=>{
如果(n+ind>arr.length-1){
让elementsFromStart=ind+n-arr.length+1;
console.log(elementsFromStart)
返回arr.slice(ind).concat(arr.slice(0,elementsFromStart))
}
否则返回arr.slice(ind,ind+n);
}
常数arr=[1,2,3,4,5];
log(getElementsFromIndex(arr,4,3))
只需使用简单的模运算即可-
const cars=[“萨博”、“沃尔沃”、“宝马”、“大众”、“菲亚特”];
函数getThreeCarsByIndex(ix){
返回[0,1,2]。映射(偏移量=>cars[(ix+offset)%cars.length]);
}
log(getThreeCarsByIndex(4))代码>使用模运算符获取所需索引,而不会超出范围
函数getThreeCarsByIndex(数组,索引)
{
常量结果=[];
for(设i=0;i<3;i++)
{
push(数组[(索引+i)%array.length]);
}
返回结果;
}
var汽车=[“萨博”、“沃尔沃”、“宝马”、“大众”、“菲亚特”];
log(getThreeCarsByIndex(cars,4))代码>这里有一种方法
const cars=[“萨博”、“沃尔沃”、“宝马”、“大众”、“菲亚特”];
const getThreeCarsByIndex=(index)=>cars.slice(index,index+3).concat(cars.slice(0,(index+1)%3))
log(getThreeCarsByIndex(4))
使用切片
。如果不满足长度(此处为3),则从数组开始抓取其余元素
const getThreeCarsByIndex=(arr,index)=>{
const res=arr.slice(索引,索引+3);
返回res.concat(arr.slice(0,3-res.length));
};
var汽车=[“萨博”、“沃尔沃”、“宝马”、“大众”、“菲亚特”];
log(getThreeCarsByIndex(cars,4))
只需编写
cars.sort().slice(1,4);
当然,您可以创建一个同样适用于其他数组的函数,例如
let cars=[“萨博”、“沃尔沃”、“宝马”、“大众”、“菲亚特”];
getSequentionalElements=(arr,firstElement,lastElement)=>arr.sort().slice(firstElement,lastElement)
让newArray=getSequentionalElements(cars,1,4)
log(newArray)代码>不清楚。请多解释。它是循环链接的吗?使用模运算-4%车。长度,(4+1)%cars。长度,(4+2)%cars。长度车。切片(1,4)您需要先对数组进行排序,以将所需的值添加到数组的开头,然后使用切片。如果您在此处提出了自己的问题,则此操作不提供问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论。
cars.sort().slice(1,4);