【发布时间】:2026-01-03 09:20:03
【问题描述】:
我目前正在学习 Eloquent JS 书中的 Javascript 和 DataStructures。我目前的任务是“编写辅助函数 prepend,它接受一个元素和一个列表并创建一个新列表,将元素添加到输入列表的前面”。我想改进,所以我不一定要为我做我的工作,但请赐教。我有 3 个问题,但我的主要问题是第一个:
1:在下面的代码中,我的类型错误在哪里?控制台日志显示“TypeError:oldObj 未定义”,但我在函数内部对其进行了初始化。
lsPre = function(obj)
{
var iter = 0;
var maxIT = 0; //use to capture final object iteration
var oldObj = obj; //initialize old object
//create new object to prepend to old object
var newObj = {iteration: iter,
value: 'Overwrite this Value',
next: oldObj.next
};
while (oldObj.iteration + 1 > maxIT)
{
maxIT++;
newObj.next = oldObj.next;
oldObj = oldObj.next;
}
return newObj;
}
2:是否有比我预期的前置功能更优化的解决方案(范式)?我正在尝试学习更多面向 js 的范例,并且目前正在避免递归解决方案。
3:下面是与上述相同问题集中的较早问题的链接列表递归解决方案。是否有原因将对象返回为:
Object {iteration: 1, value: 2, next: Object}
而不是:
Object {iteration: 1, value: x, next: Object { iteration: 2, value: x, next: (and so on) }}
代码如下:
//Link List
rayREC = function(ray,iter=0)
{ //Default param 'inc' allows arbitrary implementation of this function
var rLen = ray.length;
if (iter > rLen) return;
return {//recurively increment objects
iteration: iter,
value: ray[iter],
next: rayREC(ray,iter + 1), //recursion
};
}
我还想要 3 的最佳范例或解决方案。
【问题讨论】:
标签: javascript list data-structures prepend