Javascript Object.key的顺序相反
我有一个有趣的任务。我解决了一半,但找不到解决其余问题的方法。希望有人能给我指出正确的方向 我发现这项工作离我的任务很近。但我的稍有不同,使用ES6 存在嵌套对象Javascript Object.key的顺序相反,javascript,Javascript,我有一个有趣的任务。我解决了一半,但找不到解决其余问题的方法。希望有人能给我指出正确的方向 我发现这项工作离我的任务很近。但我的稍有不同,使用ES6 存在嵌套对象 let someList = { value: 1, next: { value: 2, next: { value: 3, next: { value: 4, next: null
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的回答就是这么做的。它在打印之前执行递归,所以找到的最后一个对象是第一个打印出来的对象。问题是-我需要颠倒顺序的数字