这是我的代码。我知道这并不完全严格,但是请阐明为什么let ... in在这里无法正常工作。
const object1 = {here: 1, object: 3};
const obj = {here: 1, object: 2};
function comp(a, b) {
if (typeof a == typeof b) {
let arra = Object.keys(a);
let arrb = Object.keys(b);
for (let key in arra){
if (a[key] == b[key]) return true
}
return false
}
}
console.log(comp(obj, object1))
Run Code Online (Sandbox Code Playgroud)
以上打印,true
但应该打印false
看看这个片段:
let first = 1;
function second() {
console.log(2);
}
console.log(first, second()); // 2 1
Run Code Online (Sandbox Code Playgroud)
1 2
我希望它按顺序打印而不是2 1
. 为什么函数second
先执行?我观察到,如果两个参数都是console.log
函数,则它们传递的顺序将被保留(参见下面的示例)
function first() {
console.log(1);
}
function second() {
console.log(2);
}
console.log(first(), second()); // 1 2
Run Code Online (Sandbox Code Playgroud)
请用相关资源解释此行为。
我有一个像
[
"parent1|child1|subChild1",
"parent1|child1|subChild2",
"parent|child2|subChild1",
"parent1|child2|subChild2",
"parent2|child1|subChild1",
"parent2|child1|subChild2",
"parent2|child2|subChild1",
.
.
.
]
Run Code Online (Sandbox Code Playgroud)
其中我之前的第一个字符串|
是父级,第二个字符串是 | 是孩子和第二后第三个字符串|
是subchild
我怎样才能把这个数组转换成一个对象
[
{
"id": "parent1",
"children":[
{
"id": "child1",
"children":[
{
"id": "subChild1"
}
]
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
父 -> 子 -> 子子对象
基于塞巴斯蒂安的回答,我在下面尝试使用打字稿
private genTree(row) {
let self = this;
if (!row) {
return;
}
const [parent, ...children] = row.split('|');
if (!children || children.length === 0) {
return [{
id: parent,
children: []
}];
}
return [{
id: …
Run Code Online (Sandbox Code Playgroud) 我在 javascript 中得到两个不同的字符串长度。一个来自输入字段,另一个来自直接 js 字符串值。例如,如果我将输入字段值设置为与 js 变量str2
i,e: 中的静态输入相同\u002Funits\u002F0004\u002F62a345b3-ead7-4d06-a65b-243fc54780ec
。我得到在控制台不同字符串长度(63和48),用于从变量相同的输入str
和str2
var checklen = function() {
var str = document.getElementById("text").value;
str = str.trim();
console.log(str);
console.log(str.length);
var str2 = "\u002Funits\u002F0004\u002F62a345b3-ead7-4d06-a65b-243fc54780ec";
console.log(str2.length);
}
Run Code Online (Sandbox Code Playgroud)
<div id='form'>
text <input type="text" name="text" id="text" />
<input type="button" onclick="checklen()" value="check">
</div>
Run Code Online (Sandbox Code Playgroud)
我有两个数组。
第一个数组包含日期
['2020-03-17,2020-03-19,2020-03-18,2020-03-12']
Run Code Online (Sandbox Code Playgroud)
第二个数组包含时间,该数组由两个小时的时间段组成。
['11:00', '13:00','15:00', '17:00','19:00', '21:00', '23:00']
Run Code Online (Sandbox Code Playgroud)
最后,我需要结果如下所示:
['2020-03-17,11:00,13:00','2020-03-19,15:00,17:00','2020-03-18,19:00,21:00']
Run Code Online (Sandbox Code Playgroud) 我正在尝试自动化我的工作,我正在将一个大数组分解成更小的数组,如下所示:
function splitArray(arr, firstbreak, secondBreak, thirdBreak, fourthBreak) {
var split1 = arr.slice(0, firstbreak);
var split2 = arr.slice(firstbreak, firstbreak + secondBreak);
var split3 = arr.slice(firstbreak + secondBreak, firstbreak + secondBreak + thirdBreak);
var split4 = arr.slice(firstbreak + secondBreak + thirdBreak, firstbreak + secondBreak + thirdBreak + fourthBreak);
console.log(split1); //[1,2,3]
console.log(split2); //[4,5,6,7]
console.log(split3); //[8]
console.log(split4); //[9,10]
}
splitArray([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 2, 4, 3, 1, 2)
Run Code Online (Sandbox Code Playgroud)
我怎样才能自动化这个?我尝试了一个 for 循环,但有点卡住了我似乎无法获得重复的公式......
我怎样才能翻转二叉树?我最近遇到了这个问题,我所有的尝试都失败了。初始树如下所示。
4
/ \
2 7
/ \ / \
1 3 6 9
4
/ \
7 2
/ \ / \
9 6 3 1
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {TreeNode}
*/
var invertTree = …
Run Code Online (Sandbox Code Playgroud) 所以,我已经理解了JavaScript 中递归的概念(有一个函数可以循环自身,直到达到基本条件,此时它停止并返回最终结果),但我有一点当我将其应用到尝试应用它来创建数组的实际语法时,我感到头疼。
\n让我们使用freeCodeCamp 的倒计时练习作为示例。这是正确的结果:
\nfunction countdown(n) {\n if (n < 1) {\n return [];\n } else {\n const arr = countdown(n - 1);\n arr.unshift(n);\n return arr;\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n这里的想法显然是有一个函数从给定的n倒数到 1。我理解这个想法,但我有几个问题:
\n1 -为什么将数组声明为常量并分配给递归调用?数组不应该更好地在外部声明为变量(因为它会更改值)\xe2\x80\x93 并且其当前位置不意味着每次发生递归时都会声明(并覆盖)它?
\n2 -我得到了当前值的不变,但为什么它是在递归调用之后声明的?难道它不应该放置在之前(上面一行)以便在函数循环本身之前取消移位值吗?
\n3 -同样,为什么 …
我想尝试一些 3 维立体视觉的东西,我需要 2 个画布,但我什么也没找到。
我尝试过使用canvas1.background(200);
function setup() {
let canvas1 = createCanvas(100, 100);
canvas1.position(0,0);
}
function draw() {
//for canvas 1
background(100);
rotateX(frameCount * 0.01);
rotateZ(frameCount * 0.01);
cone(30, 50);
}
function setup() {
let canvas2 = createCanvas(100, 100);
canvas2.position(100,0);
}
function draw() {
//for canvas 2
background(100);
rotateX(frameCount * 0.01);
rotateZ(frameCount * 0.02);
cone(30, 50);
}
Run Code Online (Sandbox Code Playgroud) 我有以下问题:
我想从所有以分号分隔的子元素中获取文本。
请参阅以下示例:
<div class="parent">
<div class="children 1"> </div>
<div class="children 2 ">TEXT 2</div>
<div class="children 3 ">TEXT 3</div>
<div class="children 4 ">TEXT 4</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我知道,我可以用它
document.querySelector('.parent').textContent
来获得TEXT 2 TEXT 3 TEXT 4
但我想得到TEXT 2;TEXT 3;TEXT 4(请注意,TEXT 2 之前没有分号,因为孩子 1 没有文本)
谢谢你的帮助!
javascript ×10
arrays ×4
algorithm ×2
automation ×1
binary ×1
console ×1
console.log ×1
loops ×1
nested ×1
p5.js ×1
recursion ×1
split ×1
tree ×1
typescript ×1