我有一个像这样的数组
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链表将第二个数组推入第一个数组,如上述数组。
答案 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]}
)}