javascript数组在转义一个索引时显示未定义
当我试图分配一个带有特定索引的值时,我会遇到一个问题。假设我有javascript变量,比如javascript数组在转义一个索引时显示未定义,javascript,arrays,Javascript,Arrays,当我试图分配一个带有特定索引的值时,我会遇到一个问题。假设我有javascript变量,比如 var track = new Array(); 现在我为一个特定的索引赋值,比如- track[10]= "test text"; 现在数组有一个值,它的长度是1。但主要的问题是它显示它的长度是11 alert(track.length); // 11 but I expect 1 如果我打印它的值,它就会显示-- 如果我操控这个数组,它会显示如下-- 我非常困惑,因为我只分配了一个值,但它
var track = new Array();
现在我为一个特定的索引赋值,比如-
track[10]= "test text";
现在数组有一个值,它的长度是1。但主要的问题是它显示它的长度是11
alert(track.length); // 11 but I expect 1
如果我打印它的值,它就会显示--
如果我操控这个数组,它会显示如下--
我非常困惑,因为我只分配了一个值,但它显示了11。它如何赋值以及数组变量显示的特征。有人能解释我和如何得到它的长度1使用下面的代码吗--
数组
对象自动填充缺少的索引。它给出长度11的原因是因为索引从0
开始
如果要使用键值,只需使用对象即可
var track={}代码>
但是,它不会有.length
值。因为您正在设置第10位的值,所以它显示的数组大小为11
您必须从第0个位置开始
var track = new Array();
track[0]= "test text";
alert(track); // test text
alert(track.length); // 1
console.log(track); // test text
试试这个javascript会自动填充数组以推送所需的元素。通过执行以下操作,可以获得“真实”计数:
track.filter(布尔值).length
但是请注意,只有当您没有任何其他元素解析为“false”值(例如,空字符串或将其设置为false)时,这才会“起作用”,因此如果您希望这样做,请确保您从未将任何其他数组元素实际设置为false值,以便使用此约定。例如,如果要将其他数组值设置为falsy值,请使用类似-1
的内容作为检查对象。对于此类操作,我通常更喜欢名为underline.js的库
它抽象了数组操作。您可能希望签出该方法
Compact的工作原理如下:
_.compact([undefined, undefined, undefined, "test test"]) as ["test test"]
然后可以检查返回数组的长度
虽然一个简单的方法是
filter(Boolean).length
但如果要使用数组,则可能需要下划线。数组是一个数字索引集合。如果将某个值设置为10
,则会隐式创建0..9
索引。但过滤器(布尔值)会更改数组索引。假设如果你想过滤一个数组,它会改变它的索引,比如track[10]=“testtext”;现在,您可以在筛选后使用轨迹[0]获取值。因此,这取决于用例。一个简单的循环可以遍历数组并检查内容是否为假值。
var track = new Array();
track[0]= "test text";
alert(track); // test text
alert(track.length); // 1
console.log(track); // test text
_.compact([undefined, undefined, undefined, "test test"]) as ["test test"]
filter(Boolean).length