新编码器在这里试图学习JS.我已经使用了codecademy,现在正在使用Eloquent Javascript.我终于摸了一会儿后终于得到了一些东西......但它不起作用!我不太确定我是否从正确的角度接近这个但我确实知道我想使用循环来跟踪基于#的网格的打印进度.
编写一个程序,创建一个代表8×8网格的字符串,使用换行符分隔行.在网格的每个位置处都有空格或"#"字符.角色应该形成棋盘.将此字符串传递给console.log应该显示如下内容:
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
Run Code Online (Sandbox Code Playgroud)
我的代码如下:
var chessBoard = "";
var size = 8;
for (var lineCounter = 1; lineCounter < size; lineCounter++) {
if (lineCounter%2 === 0) { /
/if lineCounter is an even number
for (var charCounter = 1; charCounter < size; charCounter++) {
var evenOdd = (charCounter%2 === 0);
switch (evenOdd) {
case true:
(chessBoard …Run Code Online (Sandbox Code Playgroud) 今天我读完了Ch.4在Eloquent JS中,我很难理解如何在对象及其属性之间进行深度比较,特别是通过使用递归调用.我知道下面我的解决方案很天真,有点笨重,但我正试图把我所有的新东西都包围起来,我还在学习!只需不到一个月的编程:)我将不胜感激任何提示和帮助,你可能有改进代码,如果你可以帮助我更好地理解需要发生的递归.先感谢您!
编写一个函数deepEqual,它接受两个值,只有当它们是相同的值时返回true,或者是与对deepEqual的递归调用相比,其值也相等的对象.
var obj = {here: {is: "an"}, object: 2};
var obj1 = {here: {is: "an"}, object: 2};
console.log(deepEqual(obj,obj1));
Run Code Online (Sandbox Code Playgroud)
我的代码:
function objectTester(x) {
if (typeof x === 'object' && x !== null)
return true;
}
function deepEqual(valOne, valTwo) {
if (valOne === valTwo) return true;
var comp1 = objectTester(valOne);
var comp2 = objectTester(valTwo);
if (comp1 === comp2) {
var count1;
var count2;
for (var prop in valOne) {
count1++
return count1;
}
for (var …Run Code Online (Sandbox Code Playgroud) 一直试图通过查看下划线文档并尝试编写我自己的更常用函数版本来了解有关函数式编程的更多信息.
来到"memoize" - 我无法绕过它,并在Crockford的'The Good Parts'中找到了一些信息.
_.memoize = function(func) {
// 'cache' object is used to hold the result of the memoized fn's call
var cache = {};
var recur = function(n) {
var result = cache[n];
if (typeof result === 'undefined') {
result = func.apply(this, arguments);
cache[n] = result;
}
return result;
}
return recur;
};
Run Code Online (Sandbox Code Playgroud)
你能帮我理解我是否需要使用.apply,如果有任何核心改进,我可以对这段代码做些什么?真的很感激帮助!
在解决一些 Coderbyte 挑战时,我能够递归地解决以下问题,但希望得到一些关于如何改进它的反馈。
让函数 AdditivePersistence(num) 接受传递的 num 参数,该参数始终是一个正整数,并返回其附加持久性,即必须在 num 中添加数字直到达到一位数的次数。
例如:如果 num 是 2718,那么你的程序应该返回 2,因为 2 + 7 + 1 + 8 = 18 和 1 + 8 = 9 并且你在 9 处停止。
我提交的工作递归解决方案如下。如何将“计数”放入我的函数中,而不会在每次递归时让它“重置”?
var count = 0;
function AdditivePersistence(num) {
count = 0;
if (num < 10) {
return count;
}
if (num > 10) {
count++;
AdditivePersistence('' + num.split("").reduce(function(a,b) {
return parseInt(a) + parseInt(b)
}));
}
}
Run Code Online (Sandbox Code Playgroud)
这是我在函数内移动计数器的失败尝试......希望为我的初学者提供任何指针。除了修复代码之外,如果有其他解决这个难题的好方法,我会很高兴的!
function AdditivePersistence(num) {
var count = 0;
(function recurse(num) { …Run Code Online (Sandbox Code Playgroud)