使用Array(n)在javascript中定义数组定义了一个空数组,如果我错了,请纠正我.现在,如果我写下面的代码:
Array(2).map((val) => console.log(val))Run Code Online (Sandbox Code Playgroud)
没有任何反应,但是当我将数组的元素分散到另一个数组中时,就像这样:
[...Array(2)].map((val) => console.log(val))Run Code Online (Sandbox Code Playgroud)
..我得到未定义的控制台日志.谁能帮助我了解这里发生了什么?
我试图在javascript中编写一个正则表达式来验证字符串是否是一个有效的jquery选择器.这是严格的教育,而不是我的任何项目的特殊要求
图案
/^(\$|Jquery)\(('|")[\.|#]?[a-zA-Z][a-zA-Z0-9!]*('|")\)$/gi
它适用于以下测试
$("#id")//true
$('.class')//true
jquery('.class')//true
jquery('div')//true
我的问题是测试$('#id")也返回true,即在js中使用混合单引号和双引号无效.如何限制这一点.我们可以有条件正则表达式吗?
const pattern = /^(\$|Jquery)\(('|")[\.|#]?[a-zA-Z][a-zA-Z0-9!]*('|")\)$/gi;
[
`$("#id")`, //true
`$('.class')`, //true
`jquery('.class')`, //true
`jquery('div')`, //true
].forEach(str => console.log(pattern.test(str)));Run Code Online (Sandbox Code Playgroud)
var nestedArr3 = [[[1,2],[3,4]],[[5,6]]];
function sumTotal() {
var sum = 0;
for (var i = 0; i < nestedArr3.length; i++) {
for (var j = 0; j < nestedArr3[i].length; j++) {
if (typeof nestedArr3[i][j] === "number") {
sum += nestedArr3[i][j];
} else if (Array.isArray(nestedArr3[i][j] === true)) {
sumTotal(nestedArr3[i][j]);
}
}
}
return console.log(sum);
}
console.log(sumTotal());Run Code Online (Sandbox Code Playgroud)
我得到0的结果.我无法弄清楚如何修复此代码.任何帮助,将不胜感激.
如何在对象内部舍入数字,如下所示:
{1: {x:10.76, y:50.44}, 2:{x:5.887, y:23.433}, ...}
Run Code Online (Sandbox Code Playgroud)
我尝试使用地图这样做,但我猜地图只适用于数组
obj.map(function(each_element){
return Number(each_element.toFixed(0.1));
});
Run Code Online (Sandbox Code Playgroud) .red p {
color: red;
}
.blue p {
color: blue;
}Run Code Online (Sandbox Code Playgroud)
<div class="blue">
<p> first </p>
<div class="red">
<p> second </p>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
我假设第一个是蓝色,第二个是红色,但事实并非如此.为什么这两段都是蓝色的?
据我所知,在Javascript中伪造的值之后不会执行表达式。例如下面的语句:
const result = undefined && 5;
console.log(result);Run Code Online (Sandbox Code Playgroud)
result 将是不确定的。
然而:
const result = false && false ? 'T' : 'F';
console.log(result);Run Code Online (Sandbox Code Playgroud)
result将等于F。为什么仍然执行三元表达式?
我只想提取那些具有唯一字符的字符串,我有一个字符串数组:
var arr = ["abb", "abc", "abcdb", "aea", "bbb", "ego"];
Output: ["abc", "ego"]
Run Code Online (Sandbox Code Playgroud)
我尝试使用 Array.forEach() 方法来实现它:
var arr = ["abb", "abc", "abcdb", "aea", "bbb", "ego"];
Output: ["abc", "ego"]
Run Code Online (Sandbox Code Playgroud)
想知道有没有其他方法可以实现这个任务?
任何建议。
我有一个包含两项的清单。第二个项目的 ID 由 生成并getTime()与 串联new$,形成一个随机 ID,如下图所示。
我需要定位该元素来执行某些功能,但是当我尝试使用 执行此操作时querySelector,它会产生一个错误,指出它不是有效的选择器,即使我使用它将String()生成的随机数转换为字符串也是如此。
我在这里缺少什么?
ES2020 包含一个新String.prototype.matchAll方法,它返回一个迭代器。我确定我错过了一些愚蠢/明显的东西,但我不明白为什么它不只是返回一个数组。
有人可以解释一下那里的逻辑吗?
编辑:只是为了澄清评论中的一些内容,我假设迭代器并没有简单地替换数组,因为所有 JS API 的新方式都会返回多个值。如果我错过了那个备忘录,并且所有新的 JS 函数都返回迭代器,那么指向所述备忘录的链接将 100% 成为有效答案。
但同样,我怀疑没有进行这样的全面更改,并且 Javascript 的制造商为这个特定的方法做出了一个特定的选择,让它返回一个迭代器......而这个选择的逻辑就是我'我试图理解。
有人查看了我的代码,说下面的 SQL 查询 (SELECT * FROM...) 显然容易受到攻击。我已经对此进行了研究,看来我通过使用参数化查询正确地做到了这一点,但显然我遗漏了一些东西。
app.get("/api/v1/:userId", async (req, res) => {
try {
const teammate = await db.query("SELECT * FROM teammates WHERE uid = $1", [
req.params.userId,
]);
Run Code Online (Sandbox Code Playgroud)