我有一个[0,1,2,3,4,5,6,7,8,9]的数组。我目前正在使用Javascript语言。
然后,我想将其简化为一个新的数组,该数组本身的编号为7,索引为4,而数组中的其余数字从该索引之后的最低到最大排序。
此任务的挑战之一是获取低于7的数字以在索引4之前对其进行排序。
它必须在索引4处。不能在其他索引处。放在索引4处的目标数字可以是我在上面编写的数组中的任何数字。
示例:
当我想在索引4处有数字7时要返回的数组:
[3,4,5,6,7,8,9,0,1,2]
当我想在索引4处有数字9时要返回的数组:
[5,6,7,8,9,0,1,2,3,4]
到目前为止我最大的尝试:
let state = 7;
[0,1,2,3,4,5,6,7,8,9].reduce((acc,cur)=>{
let lastInd = state+5;
let firstInd = state-4 <0 ? 10+(state-4): state-4;
return acc
},[])
可以选择对此进行硬编码以获得答案(这是硬编码的解决方案):
let state = 7
let order = [
[0,1,2,3,4,5,6,7,8,9],
[1,2,3,4,5,6,7,8,9,0],
[2,3,4,5,6,7,8,9,0,1],
[3,4,5,6,7,8,9,0,1,2],
[4,5,6,7,8,9,0,1,2,3],
[5,6,7,8,9,0,1,2,3,4],
[6,7,8,9,0,1,2,3,4,5],
[7,8,9,0,1,2,3,4,5,6],
[8,9,0,1,2,3,4,5,6,7],
[9,0,1,2,3,4,5,6,7,8]
];
let stateArray = order.find((e)=>{
return e.indexOf(state) === 4;
});
我只是认为这将是一个消磨时间的好方法,并且是一个有趣且具有挑战性的问题,需要解决。我不急于解决此问题,因为我为项目实现了硬编码的代码,但我一直想知道对此的答案是什么,我想有人可能要解决这个问题。
使用Java或JS语言的解决方案对我来说是最佳的。我还没有学过其他语言,但是如果可以轻松地将其“翻译”为JS,我不会介意。
答案 0 :(得分:1)
这可以使用slice和concat完成:
const a=[0,1,2,3,4,5,6,7,8,9]
const f=(x)=>
{
const b=a.slice(x-4)
const c=a.slice(0,x-4)
return( b.concat(c))}
因此,如果您致电f(7)
,您将得到:
[3,4,5,6,7,8,9,0,1,2]