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&&i console.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]}