我正在学习javascript,并遇到了一些类似于以下代码的Javascript代码。似乎carArrays
仅通过将数组分配给即可将对象变成地图carArrays[car1.year]
。因此,我对此代码有很多疑问。
哪些JavaScript规则允许您执行此操作?
我以为[]
是阵列。如果carArrays现在是地图,为什么使用方括号将其索引?
关于carArrays成为地图,我的解释正确吗?还是仍将其视为具有键“ 1999”和“ 2005”的对象?
我的代码:
function car( make, model, year){
this.make = make;
this.model = model;
this.year = year;
}
let car1 = new car('bmw', '3series', 1999);
let car2 = new car('ford', 'crownvic', 1999);
let car3 = new car('honda', 'accord', 1999);
let car4 = new car('bentley', '5', 2005);
let car5 = new car('chevy', 'silverado', 2005);
let car6 = new car('toyota', 'rav4', 2005);
let carArrays = {};
carArrays[car1.year] = [car1, car2, car3];
carArrays[car4.year] …
Run Code Online (Sandbox Code Playgroud) 我试图在Uint8Array上调用.map并感到惊讶。
const tt = new Uint8Array(1);
tt[0] = 0xFF;
const ttt = tt.map(x => x.toString(2));
console.log(ttt[0]);
console.log(tt[0].toString(2));
Run Code Online (Sandbox Code Playgroud)
我希望两个输出都是“ 11111111”,但是第一个console.log会打印数字199。为什么?
我正在尝试使第二个功能等待第一个功能完成。在下面的示例中,我无法实现。在探讨异步/等待时,据说执行顺序是顺序的。但是,这里似乎并非如此。
function one() {
setTimeout(() => {
console.log('Hi')
}, 5000)
}
function two() {
setTimeout(() => {
console.log('Bye')
}, 2000)
}
async function doAll() {
await one();
await two();
}
async function demo() {
await doAll();
}
demo()
Run Code Online (Sandbox Code Playgroud)
输出量
Bye
Hi
Run Code Online (Sandbox Code Playgroud)
在此示例中,由于功能二占用的时间更少,'Bye'
因此在之前打印'Hi'
。但是我试图确保第一个函数何时完成其执行,然后应该转到第二个函数。
我有两个对象,我想将它们相互比较,就像我需要并行检查和赋值,但为此我只需要执行一个 for 循环,但我无法做到。
下面是我的代码:
function traverseObject(object1, object2) {
var key1;
var key2;
for (key1 in object1) {
for (key2 in object2) {
console.log('Key1 is -' + key1);
//console.log('Key2 is -'+key2);
if (object1.hasOwnProperty(key1) || object2.hasOwnProperty(key2)) {
console.log('Value1 ' + object1[key1]);
console.log('Value2 ' + object2[key2]);
if ((object1[key1] !== null && typeof object1[key1] === 'object') || (object2[key2] !== null && typeof object2[key2] === 'object')) {
process(object1[key1], object2[key2]);
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Bu使用它第一次运行外循环,然后读取所有内循环值,然后读取外循环的第二个值,然后再次读取内循环的所有值。
我想要的是,这同时运行,以便我可以比较它们的值。
我有一个具有这种静态结构的对象:
let obj = {
"id": "",
"id_configuration": "",
"comment": "",
"mw_assigned": "",
};
Run Code Online (Sandbox Code Playgroud)
我想通过密钥更新它的属性。例如,如果我收到
const key = 'mw_assigned'
const value = '23'
Run Code Online (Sandbox Code Playgroud)
然后我想更新对象并拥有:
let obj = {
"id": "",
"id_configuration": "",
"comment": "",
"mw_assigned": "23",
};
Run Code Online (Sandbox Code Playgroud)
我该怎么办?我试图创建一个新对象,如下所示:
const new_obj = { ...obj, key: value }
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 没有文本)
谢谢你的帮助!
var romanToInt = function(s) {
value = 0;
for (let i = 0; i < s.length; i += 1) {
symbols[s[i]] < symbols[s[i + 1]] ? value -= symbols[s[i]] : value += symbols[s[i]]
}
return value
};
Run Code Online (Sandbox Code Playgroud)
这是一个 leetcode 示例,我对这种情况感到困惑symbols[s[i]] < symbols[s[i+1]] ?
,我不明白为什么 s[i+1] 不会超出范围?或者它超出范围但被认为是错误的?
我正在尝试使用 span 类将标题标签中每个单词的第一个字母包裹起来,以便我可以使用 CSS 对其进行样式设置。我尝试使用在这里找到的代码片段,但我有 2 个 h1 标签,它使用第一个标签并重复第二个标签!
函数是这样的:
<script>
$(document).ready(function() {
var words = $('h1').text().split(' ');
var html = '';
$.each(words, function() {
html += '<span class="firstLetter">' + this.substring(0, 1) + '</span>' + this.substring(1) + ' ';
$('h1').html(html);
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
所以我在顶部的横幅中有一个 h1,在内容的开头有另一个 h1,但该函数正在获取顶部横幅标题并用它替换内容标题,但 span 类正在工作!
我知道你不应该有 2 个 h1,但无论如何我想定位所有标题,而且它是一个针对客户的 CMS,所以我不能保证他们以后不会使用多个 h1,所以我正在测试它!
嘿,所以我被分配了一项家庭作业,在这里我必须创建一个乘法表,其读法类似于所附图片
所以我在两个循环上都尝试过console.log,但这导致数字混乱。我试过在每一个中都加上“ \ n”
var insideN = " "
for (var n = 1; n <= 9; n++) {
for (var i = 1; i <= 9; i++ ,) {
insideN += (n * i) + "\n";
}
}
Run Code Online (Sandbox Code Playgroud)
我的预期结果是使它看起来像一个不错的乘法表。
以下代码给出了的输出undefined
。我的印象是所有变量和函数声明都被提升到它们作用域的顶部,因此b
现在在调用之前应该位于作用域的顶部a()
。但是,我仍然得到undefined
我的输出吗?
a()
var b = 5;
function a() {
console.log(b)
}
Run Code Online (Sandbox Code Playgroud)