小编Nic*_*ons的帖子

试图了解看起来像对象作为地图的Javascript代码

我正在学习javascript,并遇到了一些类似于以下代码的Javascript代码。似乎carArrays仅通过将数组分配给即可将对象变成地图carArrays[car1.year]。因此,我对此代码有很多疑问。

  1. 哪些JavaScript规则允许您执行此操作?

  2. 我以为[]是阵列。如果carArrays现在是地图,为什么使用方括号将其索引?

  3. 关于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)

javascript

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

Uint8Array.map(...)意外行为

我试图在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。为什么?

javascript

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

等待第一次等待完成,再等待第二次等待-Async / await

我正在尝试使第二个功能等待第一个功能完成。在下面的示例中,我无法实现。在探讨异步/等待时,据说执行顺序是顺序的。但是,这里似乎并非如此。

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'。但是我试图确保第一个函数何时完成其执行,然后应该转到第二个函数。

javascript async-await

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

如何在一个循环中迭代以比较 javascript 中的两个对象

我有两个对象,我想将它们相互比较,就像我需要并行检查和赋值,但为此我只需要执行一个 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使用它第一次运行外循环,然后读取所有内循环值,然后读取外循环的第二个值,然后再次读取内循环的所有值。
我想要的是,这同时运行,以便我可以比较它们的值。

javascript arrays object

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

JavaScript,使用动态键更新对象

我有一个具有这种静态结构的对象:

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)

我不知道如何从变量中设置键和值的名称

javascript

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

如何让所有子文本用 ; 分隔 在 JavaScript 中?

我有以下问题:

我想从所有以分号分隔的子元素中获取文本。

请参阅以下示例:

<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

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

Javascript。为什么这个条件 s[i+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] 不会超出范围?或者它超出范围但被认为是错误的?

javascript ternary conditional-statements

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

使用 javascript 定位 h1 中每个单词的第一个字母

我正在尝试使用 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,所以我正在测试它!

javascript jquery

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

我正在创建乘法表。需要帮助在每个循环之间创建新行

嘿,所以我被分配了一项家庭作业,在这里我必须创建一个乘法表,其读法类似于所附图片

想要的输出

所以我在两个循环上都尝试过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)

我的预期结果是使它看起来像一个不错的乘法表。

javascript loops

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

使用javascript和全局变量进行提升

以下代码给出了的输出undefined。我的印象是所有变量和函数声明都被提升到它们作用域的顶部,因此b现在在调用之前应该位于作用域的顶部a()。但是,我仍然得到undefined我的输出吗?

a()

var b = 5;
function a() {
  console.log(b)
}
Run Code Online (Sandbox Code Playgroud)

javascript hoisting

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