小编Chi*_*ard的帖子

循环内的递归函数

我一直在研究递归函数,我开始或多或少地开始理解它们.当我遇到这个并且我不理解时,我正在开展一个免费的代码阵营挑战.for循环内部的递归函数:

function steamroller(arr) {
   var newArr = [];

    for (var i = 0; i < arr.length; i++) {
       //If (i)th element is an array
       if (Array.isArray(arr[i])) {
          newArr = newArr.concat(steamroller(arr[i]));
          console.log(newArr);
       } else {
          newArr.push(arr[i]);
       }
   }
   return newArr;
}
steamroller([1, [2],[3, [[4]]]]);
//returns [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

我很难理解的一句话是:

newArr = newArr.concat(steamroller(arr[i]));
Run Code Online (Sandbox Code Playgroud)

在那条线上,newArr是连接到什么?在.concat方法中再次调用该函数,对吧?但是那个for循环会发生什么?函数调用concat方法是否强制循环退出?

这是一个JSFiddle,我每个都newArr登录到控制台,但我甚至无法遵循它.该数组的构建方式如下:

[1, 2]
[4]
[3, 4]
[1, 2, 3, 4] //Final
Run Code Online (Sandbox Code Playgroud)

谢谢.

javascript

5
推荐指数
1
解决办法
946
查看次数

连接对象属性的值将返回NaN(Javascript)

我有一个具有多个属性的对象,每个属性都有一个字符串值.当我尝试连接每个属性的值时,它返回NaN.

var urlProps = {
   searchTerm: "searchSTUFF",
   baseURL: "https://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exsentences=1&exlimit=10&exintro=&explaintext=&titles=%20&generator=search&gsrsearch=",
   tailURL: "&rawcontinue=&callback=?",
   finalURL: this.baseURL + this.searchTerm + this.tailURL
}

console.log(urlProps.finalURL);
//NaN
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么,或者这样做的正确方法是什么?

javascript

5
推荐指数
1
解决办法
59
查看次数

将 &lt;div&gt; 移动到另一个 &lt;div&gt; 的动画

我正在尝试学习 jQuery,并正在修改一个小项目来尝试通过实践来学习,但我一直专注于如何为一个 div 的移动设置动画到另一个 div。

澄清一下,当我单击一个 div 时,我希望将另一个 div 移动到我单击的 div。我正在使用appendTo()将他移动到那里,但正如你所知,移动是即时的,我想为移动设置动画。

这是当前正在发生的事情的小提琴:https ://jsfiddle.net/Chirpizard/jyatn89r/

只需单击蓝点即可查看发生了什么。

这是JS:

$(document).ready(function () {
  $(".node").click(function() {
    if ($(this).hasClass('unlocked')) {
      $("#main-char").appendTo(this).animate( {
        top: "+=50"
      }, 1000, function() {
      });
      $(".node").removeClass("activeNode"); //Removes all instances of activeNode
      $(this).addClass('activeNode') //Adds activeNode class to the node clicked on
    }
    else {
      console.log("Sorry, broken");
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

我检查了其他几篇文章,但没有找到我正在寻找的确切解决方案。任何有关如何到达红点以缓慢移动到单击的元素的指导将不胜感激!

谢谢

html javascript css jquery animation

4
推荐指数
1
解决办法
5347
查看次数

为什么setInterval会在我分配时启动?

我正在分配一个变量,一个使用setInterval的函数,但我不想让函数运行直到我调用它.但是,该函数仅从赋值语句运行.

sessionClock = setInterval(function() {
  console.log("Hi")
}, 1000)
Run Code Online (Sandbox Code Playgroud)

我也尝试过这样的:

sayHi = function() {
  console.log("Hi");
}

var sayHiStarter = setInterval(sayHi, 1000);
Run Code Online (Sandbox Code Playgroud)

这两个都启动该功能,并将"Hi"记录到控制台.

为什么它在分配时运行?我能做些什么来解决这个问题?

javascript

4
推荐指数
1
解决办法
82
查看次数

使用CSS/jQuery填充圆圈的背景颜色

我有一个在setInterval上运行的JS脚本,脚本进度存储在progressPercentage变量中.我正在使用此百分比值来修改具有bgcolor的子div的宽度.随着它变得越来越大,它开始填充更多的父div.

使用方形非常简单,但我很难填充圆形(border-radius: 100%).

现在我正在使用2个div,我知道有更好的方法可以做到这一点,但现在这就是它的样子:

<div id="load-bar-frame">
  <div id="load-bar"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

这是CSS:

#load-bar-frame {
  height: 200px;
  width: 200px;
  border-radius: 100%;
  padding: 3px;
  border: 1px solid #fff;
  margin: 20px auto 0 auto;
  display: block;
  position: absolute;
  bottom: 20px;
  left: 20px;
}

#load-bar {
  border-radius: 100%;
  background: #fff;
  width: 0%;
  height: 100%;
}
Run Code Online (Sandbox Code Playgroud)

JS通过增加宽度来填充背景,#load-bar因为它的宽度增加它填满了#load-bar-framediv.

问题是,在子div的宽度将从0开始,因此它是一个真正的串环并且不适合父div.

的jsfiddle

所以我正在寻找一种更好的填充bgcolor的方法.

html css jquery css3

1
推荐指数
1
解决办法
2486
查看次数

如何使用||编写if语句 (或)减少重复?

我正在尝试写一些检查字母不等于元音的东西.我知道我可以用正则表达式做到这一点,但为了更多地了解条件语句,我怎样才能更有效地编写这样的东西呢?

if (myArray[i] !== "a" || myArray[i] !=="e" || myArray[i] !=="i" || myArray[i] !=="o" || myArray[i] !=="u") {
    console.log(myArray[i] + "");
}
Run Code Online (Sandbox Code Playgroud)

通过更有效率,我的意思是更多的干,而myArray[i] !== "a"不是重复这么多.

javascript

0
推荐指数
1
解决办法
76
查看次数

标签 统计

javascript ×5

css ×2

html ×2

jquery ×2

animation ×1

css3 ×1