以特定顺序返回在特定索引处具有数字的数组的函数

时间:2019-02-08 06:52:42

标签: javascript arrays

我有一个[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,我不会介意。

1 个答案:

答案 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]