Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Object.key的顺序相反_Javascript - Fatal编程技术网

Javascript Object.key的顺序相反

Javascript Object.key的顺序相反,javascript,Javascript,我有一个有趣的任务。我解决了一半,但找不到解决其余问题的方法。希望有人能给我指出正确的方向 我发现这项工作离我的任务很近。但我的稍有不同,使用ES6 存在嵌套对象 let someList = { value: 1, next: { value: 2, next: { value: 3, next: { value: 4, next: null

我有一个有趣的任务。我解决了一半,但找不到解决其余问题的方法。希望有人能给我指出正确的方向

我发现这项工作离我的任务很近。但我的稍有不同,使用ES6

存在嵌套对象

let someList = {

   value: 1,

   next: {

      value: 2,

      next: {

         value: 3,

         next: {

            value: 4,

            next: null

            }

         }

    }

};
我收到了所有的价值观

function reversePrint(linkedList) {

Object.keys(linkedList).map(key => {
let myKey = linkedList[key];
typeof myKey == "object" ?  console.log(reversePrint(myKey)) : console.log(myKey);
});

}

reversePrint(someList);
但问题是:我如何才能以相反的顺序获得所有值

小提琴:

我尝试使用reduce for生成数组并将其反转,但每个值都在单独的数组中

拨弄


任何帮助都将受到极大的感谢

编辑-抱歉,是的,更多解释

以下代码将遍历链接列表,并按相反顺序打印值

因为日志在递归调用之后,所以这将一直到控制台日志开始之前的最后一个节点。然后,在每个控制台日志之后,堆栈中的当前函数将结束,从而允许前一个函数继续打印

让someList={
价值:1,
下一步:{
价值:2,
下一步:{
价值:3,
下一步:{
价值:4,
下一个:空
}
}
}
};
函数printfeater(节点){
if(node.next!=null){
printfeater(node.next);
}
console.log(node.value);
}

printfeater(someList)
正如其他人所建议的那样,您可以通过递归来实现这一点

function reverse(node) {
    return (node.next === null) ? [node.value] : [...reverse(node.next), node.value];
}
或者,您可以使用一个简单的循环:

function reversedValues(node) {
    const values = [];
    while (node !== null) {
        values.unshift(node.value);
        node = node.next;
    }
    return values;
}

第一种解决方案的优点是简单和优雅。缺点是,如果您的链表非常大,它可能会导致堆栈溢出。第二个解决方案有点笨重和冗长,但它不容易出现堆栈溢出。

我使用了object.keys或Reduce,但没有定义一个解决方案为什么要使用object.keys?我认为它更适合Objects非常感谢您的回答!我使用了递归,得到了一个数字,但我需要得到相反的结果order@Lucky所以你想要
1,2,3,4
作为结果?只需将
console.log()
移动到ifI希望将4、3、2、1作为result@Lucky当前位置curtainrising的回答就是这么做的。它在打印之前执行递归,所以找到的最后一个对象是第一个打印出来的对象。问题是-我需要颠倒顺序的数字