如何使用JavaScript链表实现单个索引数组

时间:2018-11-04 05:06:03

标签: javascript arrays

我有一个像这样的数组

    var arrays = [
  {
    "value": "$6"
  },
  {
    "value": "$12"
  },
  {
    "value": "$25"
  },
  {
    "value": "$25"
  },
  {
    "value": "$18"
  },
  {
    "value": "$22"
  },
  {
    "value": "$10"
  }
];

我需要将这些数组实现为像下面的数组那样的单索引数组。

[{
    "value": "$6",
    "Next": {
        "value": "$12",
        "Next": {
            "value": "$25",
            "Next": {
                "value": "$25",
                "Next": {
                    "value": "$28",
                    "Next": {
                        "value": "$22",
                        "Next": {
                            "value": "$10"
                        }
                    }
                }
            }
        }
    }
}]

如何使用javascript链表将第二个数组推入第一个数组,如上述数组。

3 个答案:

答案 0 :(得分:1)

它将沿相反的方向迭代数组,并保持先前​​的值并将其附加到当前值中并返回输出。

尝试一下

function parseData(input){
  var output = [];
  var len = input.length;
  var previous = {};
  for(var i =len-1 ; i >= 0; i--){
    var temp = {};
    temp["value"] = input[i].value;
    if(i !== len){
       temp["Next"] = previous;
    }
    previous = temp;
  }
  output.push(previous);
  return output;
}

答案 1 :(得分:1)

使用Array#reduce方法将数组转换为链接列表,其中每个迭代构造object/node并传递next引用以进行下一次迭代。当我们需要遍历链接列表时,我们需要保留root/head对象的引用。

var arrays = [{
    "value": "$6"
  },
  {
    "value": "$12"
  },
  {
    "value": "$25"
  },
  {
    "value": "$25"
  },
  {
    "value": "$18"
  },
  {
    "value": "$22"
  },
  {
    "value": "$10"
  }
];
var root = {};
arrays.reduce((acc, { value }) => {
  acc.next = { value };
  return acc.next;
}, root);
var result = [root.next];
console.log(result);

希望这会有所帮助!

答案 2 :(得分:0)

尝试

let result=[];
for(let i=0; i<arrays.length; i++){ 
   result.push(
      {"value":arrays[i]["value"], "next":arrays[i+1]}
)}