为什么此Integer成为javascript中的字符串?

时间:2019-05-08 17:22:08

标签: javascript

因此,这小段代码采用整数数组myList,并在整数字符串成为A的键时使它们成为字符串。为什么? Python很高兴它们可以保留整数,但是Javascript似乎只希望将字符串用作键。

pairs

产生:

    var pairs = {};
    for(var i=0; i < A.length; ++i) {
        var value = A[i];
        if(pairs[value]) {
            delete pairs[value];
        } else {
            pairs[value] = true;
        }
    }
    console.log(A, pairs)

将所有键添加到pairs对象时,它们都是整数,但是当用作键时,它们将成为字符串。这与python有很大的不同

4 个答案:

答案 0 :(得分:0)

javascript中的所有对象键都是字符串。可以证明这一点:

let obj = {
    1: 'one'
}

然后

Object.keys(obj).forEach(key => {
    console.log(key, typeof key)
})

您会得到

1 string

答案 1 :(得分:0)

根据定义,对象键始终是字符串(或符号),如果您将其他内容用作键,它将被转换为字符串。要在JS中创建Map,可以使用postgresIsUp = False while not postgresIsUp: try: pingPostgres() postgresIsUp = True except PingError: print("postgres is not yet running") Map在这种情况下就足够了:

Set

答案 2 :(得分:0)

在Javascript @if($errors) {{var_dump(Session::all())}} @endif 中是Object类型的文字表达式。根据{{​​3}}对象将字符串名称映射为值。

可以接受任意值作为键的数据类型为the documentation

答案 3 :(得分:0)

对象键始终是字符串。例如

let x = {};
x.a = 1;
x[2] = 2;
x[x] = 3;

console.log(x);

另一方面,如果要使用整数索引,则可以使用数组代替

let A = [9, 3, 9, 3, 9, 7, 9];
var pairs = [];
for (var i = 0; i < A.length; ++i) {
  var value = A[i];
  if (pairs[value]) {
    delete pairs[value];
  } else {
    pairs[value] = true;
  }
}
console.log(A, pairs.reduce((acc, v, i) => {
  if (v) acc.push(i);
  return acc;
}, []));