JavaScript面试数组index和对象key问题详解

2022-12-22 12:38:32

目录面试题一:1、数组赋值2、数组取值面试题二:1、对象赋值2、对象取值总结面试题一:vararr=[1,2,3,4]复制代码问:arr[1]=?;arr[1]=?答:arr[1...

目录
面试题一:
1、数组赋值
2、数组取值
面试题二:
1、对象赋值
2、对象取值
总结

面试题一:

var arr = [1, 2, 3, 4]
复制代码

问:arr[1] = ?; arr['1'] = ?

答:arr[1] = 2; arr['1'] = 2

这里可以再分为两个问题:

1、数组赋www.cppcns.com

var arr = [1, 2, 3, 4]

arr[1] = 10; // 数字场景
arr['10'] = 1; // 字符串场景
arr['a'] = 1; // 字符串场景
arr[true] = 2; // 布尔值
arr[undefined] = 3; // undefined
arr[null] = 4; // null
arr[Symbol] = 5; // Symbol
arr[new Object()] = 6; // 对象
arr[function(){}] = 7 // 函数
复制代码

打印结果:

image.png

结果说明,修改数组的值的过程中,下标index如果是数字,那么,就是正常的数组赋值。

如果是非数字,那么会将其转换为字符串,其实数组也是对象,那么,非数字就相当于给对象arrkey键定义的value值。

2、数组取值

通过上述方式先为数组赋值,然后再通过以下方式取值:

console.log(arr[1]);%20//%2010 console.log(arr['10']);%20//%201 console.log(arr[true]);%20//%202 console.log(arr[undefined]);%20//3 console.log(arr[null]);%20//%204 console.log(arr[Symbol]);%20//%205 console.log(arr[new%20Object()]);%20//%206 console.log(arr[function(){}]);%20//%207 复制代码

由打印的结果可以看出,数组在取值时索引是数字,按照数组取值方式获取。

如果索引位置是非数字,会将其转换成字符串,通过对象的方式取值。

所以题目中的arr['1']会转换成arr[1],最终获取到的值为2

面试题二:

var%20obj%20=%20{ %20%20%20%200:%201, %20%20%20%201:%202, %20%20%20%202:%203 } 复制代码

问:obj[1]%20=%20?;%20obj['1']%20=%20?

答:obj[1]%20=%202;%20obj['1']%20=%202

这里也可以再分为两个问题:

1、对象赋值

var%20obj%20=%20{ %20%20%20%200:%201, %20%20%20%201:%202, %20%20%20%202:%203 } obj[1]%20=%2010;%20//%20数字场景 obj['10']%20=%201;%20//%20字符串场景 obj['a']%20=%201;%20//%20字符串场景 obj[true]%20=%202;%20//%20布尔值 obj[undefined]%20=%203;%20//%20undefined obj[null]%20=%204;%20//%20null obj[Symbol]%20=%205;%20//%20Symbol obj[new%20Object()]%20=%206;%20//%20对象 obj[function%20()%20{}]%20=%207%20//%20函数 复制代码

打印结果:

可以看出,对象赋值的时候,如果key值不是字符串,会将其转换成字符串。

2、对象取值

通过上述方式先为对象赋值,然后再通过以javascript下方式取值:

console.log(arr[1]); // 10
console.log(arr['10']); // 1
console.log(arr[true]); // 2
console.log(arr[undefined]); //3
console.log(arr[null]); // 4
console.log(arr[Symbol]); // 5
console.log(arr[new Object()]); // 6
console.log(arr[function(){}]); // 7
复制代码

由打印的结果可以看出,对象在取值时,如果当前key值不是字符串,会将其转换成字符串,再取值。

所以题目中的arr[1]会转换成arr['1'],最终获取到的值为2

总结

对象的下标如果不是字符串,会将其先转换成字符串,再去求值。数组的下标如果不是数字,先将其尝试转成数字去取值;如果转不成数字,则会利用数组也是对象的特点,将其转换成字符串,再去取值。

以上就是JavaScript面试数组index和对象key问题详解的详细内容,更多关于javascript数组index对象key的资料请关注我们其它相关文章!