Javascript 如何从数组而不是索引返回项

Javascript 如何从数组而不是索引返回项,javascript,Javascript,我正在创建一个函数,返回数组的元素并返回上一个和下一个元素,但我的问题是我的函数返回数组元素的索引,我想返回项目 这是数组 var items = ['bill','hill','dill',4,5,6,7,8,9,10]; 这是我的职责 function getItem(index, arr) { if(index > arr.length) { return -1; } const prev = index - 1; const n

我正在创建一个函数,返回数组的元素并返回上一个和下一个元素,但我的问题是我的函数返回数组元素的索引,我想返回项目

这是数组

var items = ['bill','hill','dill',4,5,6,7,8,9,10];
这是我的职责

function getItem(index, arr) {
    if(index > arr.length) {
        return -1; 
    }

    const prev = index - 1;
    const next = index + 1;
    const prevPrev = prev - 1;
    const nextNext = next + 1;

    if(index == 0) { 
        return {index, next, nextNext}
    } else if (index == arr.length - 1) { 
        return {prevPrev, prev, index}
    } else {
        return {prev, index, next};
    }
}
输出为

{prev: 1, index: 2, next: 3}
我想回去

{prev:'bill', index:'hill', next:'dill'}

你可以这样做:

var项目=['bill','hill','dill',4,5,6,7,8,9,10];
函数getItem(索引,arr){
如果(索引>阵列长度){
返回-1;
}
const prev=项目[索引-1];
const next=项目[索引+1];
const prev=项目[prev-1];
const nextNext=项目[next+1];
const index1=项目[索引]
如果(索引==0){
返回{
index1,
下一个
下一个
}
}else if(索引==arr.length-1){
返回{
上,
前,
index1
}
}否则{
返回{
前,
index1,
下一个
};
}
}

日志(getItem(1,items))假设函数的输入是“index”的数字和“arr”的数组,返回arr[number]应该返回所需的元素

i、 e


尽管您应该防止返回值超出范围(即检查nextNext和prevPrev是否仍在数组大小范围内-例如仅为2的数组)

如果您知道索引,您可以使用:

    if(index == 0) { 
        return {arr[index], arr[next], arr[nextNext]}

…等等。

您必须在函数内部做一些小的更改 检查这些行
constprev=index-1;
const next=索引+1;
返回{prev,index:index,next}
把它们换成
const prev=arr[index-1];
const next=arr[index+1];
返回{prev,index:arr[index],next}所以它返回索引的instad值

var项目=['bill','hill','dill',4,5,6,7,8,9,10];
函数getItem(索引,arr){
如果(索引>阵列长度){
返回-1;
}
const prev=arr[index-1];
const next=arr[index+1];
常量prev=prev-1;
const nextNext=next+1;
如果(索引==0){
返回{index,next,nextNext}
}如果(索引==arr.length-1){
返回{prev,prev,index}
}否则{
返回{prev,index:arr[index],next};
}
}

log(getItem(1,items))
您可以使用map实现相同的功能

var项目=['bill','hill','dill',4,5,6,7,8,9,10];
var arr=items.map((项、索引、数组)=>{
返回{
上一项:,
索引:数组[索引+1],
下一步:数组[索引+2]
}
});

console.log(arr)
以下是我如何在索引超出范围时使用内部的
safeGet
函数返回undefined:

const items=['bill','hill','dill',4,5,6,7,8,9,10];
const getItem=(arr,i)=>{
const safeGet=i=>i>=0&&iconsole.log(getItem(items,20))如何调用
getItem
functionconsole.log(getItem(2,items));ES6对象属性速记不适合您的情况。您必须在返回对象时明确定义每个键的值,例如:
{index:arr[index],next:arr[next],nextNext:arr[nextNext]}
谢谢您的回答。如果我有这个数组var items=[1,2,3,4,5,6,7,8,9,10],那么只有一个问题;当我运行console.log(getItem(1,items));我的输出是prev:1,index:1,next:3
    if(index == 0) { 
        return {arr[index], arr[next], arr[nextNext]}