Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用数字给出字符串索引_Javascript_Arrays - Fatal编程技术网

Javascript 用数字给出字符串索引

Javascript 用数字给出字符串索引,javascript,arrays,Javascript,Arrays,我正在测试将索引作为字符串提供给数组。但我注意到数组将字符串索引转换为数字 例如:A[1]与A[1]一起变为 我可以给数组索引指定一个数字作为字符串吗 预期产出: 输出: [ <1 empty item>, 1, <1 empty item>, 3 ] 输出: [ a: 1, c: 3 ] 我认为您混淆了对象和数组 数组只是一个项目列表: const array = [1,2,3,4,5] // You can access its items by index:

我正在测试将索引作为字符串提供给数组。但我注意到数组将字符串索引转换为数字

例如:A[1]与A[1]一起变为

我可以给数组索引指定一个数字作为字符串吗

预期产出:

输出:

[ <1 empty item>, 1, <1 empty item>, 3 ]
输出:

  [ a: 1, c: 3 ]

我认为您混淆了对象和数组

数组只是一个项目列表:

const array = [1,2,3,4,5]
// You can access its items by index:
array[0] => 1
array['1'] => 2
对象是键值对列表,键是字符串:

const obj = { a: 1, b: 2 }
// You can access its item values by key:
array.a => 1
array['b'] => 2

所有属性名称都是字符串,因此类似于数组的数字属性名称实际上与任何其他属性名称没有任何区别

Javascript数组不能有字符串索引。Javascript数组仅以数字索引。设置字符串索引时,您正在设置对象的属性

A.A='1'和A['A']='1'相等

所以我认为你需要使用object。您可以这样做以获得相同的输出

 function test() {
  // A["1"] = 1;
  // A["3"] = 3;

  let A = {
    1: 1,
    3: 3
  };

  return A;
}
输出

{ '1': 1, '3': 3 }
JavaScript中的所有内容都是一个对象

数组也是。它只是有一些特殊的属性和符号。数组是一个对象,其中值存储在键值对中。键是数组的索引,值是元素。 例如:

const a = [1,2,4,6]
Object.keys(a) // iterating through keys will give you indexes [0,1,2,3]
只有一个陷阱。若将数组的索引作为非负整数提供,它将把值推送到数组,否则所有值都将作为对象关联

所以


希望有帮助。

使用括号符号设置的每个属性都会强制使用StringyourKey字符串,符号除外。因此,1或1不会有任何区别。如果您解释为什么要这样做,我们可能会为您的数据结构提供更好的建议。[]数组和{}对象之间存在差异
 function test() {
  // A["1"] = 1;
  // A["3"] = 3;

  let A = {
    1: 1,
    3: 3
  };

  return A;
}
{ '1': 1, '3': 3 }
const a = [1,2,4,6]
Object.keys(a) // iterating through keys will give you indexes [0,1,2,3]
a["a"]=1 // [1,2,4,6, a:1], length of an array will be 4 and key a can be accessed as property