javascript - 在数组的负索引中添加元素?
问题描述
arr = Array(10).fill(false)
arr[-2] = true
console.log(arr)
[false, false, false, false, false, false, false, false, false, false, -2: true]
console.log(arr.length) // 10
我很惊讶在数组的负索引中添加一个元素,在数组中添加一个键值对。而且,数组的长度不会增加吗?
解决方案
数组是数字索引的,但棘手的是它们也是可以添加字符串键/属性的对象(但不计入数组的长度):
数组中的索引从0
后面开始,即它们可以是正数。
当您尝试访问数组中的负索引时,a[-1]
它将充当键并将-1
作为键存储"-1"
在数组中,该数组也是一个对象。但它不会计入数组的长度,只有数字索引才会计入数组的长度。您可以在 javascript 中将数组称为对象的子类型
let a = [];
a[0] = 9;
a[-1] = 10; // will act as key "-1" added to object a with value 10
console.log(a); //[9]
console.log(a["-1"]); //10
console.log("Length of array " + a.length); // 1, key "-1" will not contribute to the lenght of an array
我建议你阅读这篇文章
推荐阅读
- asp.net - 可以从 asp.net core 2.2 目标的 SignInManager 在 4.6.1 上运行
- c# - 如何在 C# 中使用 Microsoft.Azure.Management.Automation AutomationClient 启动 Azure Runbook/webhook?
- c++ - 错误:未在此范围内声明“sumProduct”
- ios - yarn run ios - 错误:找不到模块 - React Native
- powershell-4.0 - 在powershell中创建一个环回,直到满足变量
- dc.js - 如何在我的交叉过滤器组中使用自定义减少功能?
- excel - VBA Excel 查找 2 个动态范围之间的值
- javascript - 通过 socket.io 发送 var
- c# - 使用双精度列表中的 foreach 循环创建字符串列表。每两个值必须压缩成一个字符串,然后添加到列表中
- c++ - 标头中的 inline 和 constexpr 无捕获 lambda 有什么区别?