Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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/4/algorithm/12.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 我想从数组中取第一个数字,并根据其索引在其旁边放置相等数量的0_Javascript_Algorithm - Fatal编程技术网

Javascript 我想从数组中取第一个数字,并根据其索引在其旁边放置相等数量的0

Javascript 我想从数组中取第一个数字,并根据其索引在其旁边放置相等数量的0,javascript,algorithm,Javascript,Algorithm,编辑:没有给我太多关于如何在for循环中实现它的答案。你能告诉我如何实现这一点的逻辑/伪代码吗?我陷入困境的一个部分是,好吧,我知道我必须获取第一个索引号,并向其中添加array.length-1零(2个零),但我不清楚它何时到达最后一个索引,我是否在for循环中放入if语句 在下面的示例中,459将被放入一个数组[4,5,9] 现在我想取4,在末尾加两个零,因为在数组中它后面有两个数字 然后我想取5,加上一个零,因为数组中它后面有一个数字 那么9就不会加零,因为后面没有数字 所以最终的产量是4

编辑:没有给我太多关于如何在for循环中实现它的答案。你能告诉我如何实现这一点的逻辑/伪代码吗?我陷入困境的一个部分是,好吧,我知道我必须获取第一个索引号,并向其中添加array.length-1零(2个零),但我不清楚它何时到达最后一个索引,我是否在for循环中放入if语句

在下面的示例中,459将被放入一个数组[4,5,9]

现在我想取4,在末尾加两个零,因为在数组中它后面有两个数字

然后我想取5,加上一个零,因为数组中它后面有一个数字

那么9就不会加零,因为后面没有数字

所以最终的产量是400,50,9

我如何才能最好地实现这一点

var num=459;
var nexint=num.toString().split(“”);
var finalint=nexint.map(编号);

var nextar=[]您需要使用string的repeat方法

var num=459;
变量a=(“”+num).split(“”).map((c,i,a)=>c+“0”。重复(a.length-i-1))
控制台日志(a)
您可以对值乘以
10
使用and并返回一个新数组

var num=459,
结果=[…num.toString()].reduce((r,a)=>r.map(v=>10*v).concat(+a),[]);

控制台日志(结果)OP要求在上面的注释中使用循环来解决问题。这里有一种使用循环的方法:

var num = 459
var numArray = num.toString().split('');
var position = numArray.length - 1;
var finalArray = [];
var i;
var j;
for(i = 0; i < numArray.length; i++) {
  finalArray.push(numArray[i]);
  for(j = 0; j < position; j++) {
    finalArray.push(0);
  }
  position--;
}
console.log(finalArray);
var num=459
var numArray=num.toString().split(“”);
var位置=numArray.length-1;
var finalArray=[];
var i;
var j;
对于(i=0;i
一般流程

在原始阵列上循环,每次循环时:

  • 将元素推送到最终数组
  • 然后将X个零推送到最终数组。X由 元素在原始数组中的位置,因此如果 数组有3个元素,第一个元素后面应该有2个零。 这意味着X是第一次传递时原始数组的长度-1
  • 调整跟踪要添加的零数的变量 在循环中进行下一次传递

这类似于@OccamsRazor的实现,但使用了稍微不同的API,并且布局更易于阅读:

const-toParts=n=>String(n)
.拆分(“”)
.map((d,i,a)=>d.padEnd(a.length-i,'0'))
.地图(编号)

console.log(toParts(459))
这是什么?听起来完全没有意义,这意味着它可能是家庭作业、代码战挑战或其他什么。这一点都没有帮助。这就是我所能得到的,因此我为什么要问,这样我才能理解答案。如果没有人真的提供帮助,人们会去哪里寻求帮助?对于一个第一次尝试学习的人来说,这更难time@RogerC我喜欢那个网站。使给出否决票理由变得容易。@user2763557这里的要点是,您甚至没有尝试创建解决方案。此网站不存在,无法为您编写代码。这个网站的存在是为了帮助您使用您已经编写的代码,但是您没有编写任何代码。上面有代码!下一步是我要做的,我要做的是下一个逻辑步骤,所以我在这里寻求帮助或指导,我下一步可以做什么,见鬼,我甚至不需要答案,我只需要一只指导手,这样我就能找到答案。你甚至不需要给我正确的代码,即使只是指导我正确方向的伪代码,也会对我的学习过程更有帮助,而不是愚蠢的链接到为什么你投了反对票(无意冒犯)。谢谢!关于修改这段代码,由于我的理解仅限于.map方法/。重复。你能通过for循环来帮助实现这一点吗?@Occam'sRazor抱歉,让我重新措辞,而不给我如何为循环实现的答案。你能告诉我如何实现这一点的逻辑/伪代码吗?我陷入困境的一个部分是,好吧,我知道我必须获取第一个索引号,并向其中添加array.length-1零(2个零),但我不清楚它何时到达最后一个索引,我是否在for循环中放入if语句?抱歉,如果我弄糊涂了。@user2763557请用这些信息回答您的问题。您提到了
reduceRight
,但使用了
reduce
@ScottSauyet,我在考虑它,但代码是对的,描述不是。谢谢。当有一个工作片段时,这总是很容易辨别的!:-)是的,它使用循环,但我个人觉得这个解决方案比这里发布的任何其他解决方案都更难理解。这也是我几乎从不为
使用
的部分原因。