Javascript js/jquery-如何在没有索引的情况下获取数组值
我有以下数组:Javascript js/jquery-如何在没有索引的情况下获取数组值,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有以下数组: >>> var cars = new Array; undefined >>> cars[5] = 'Volvo'; "Volvo" >>> cars[10] = 'Honda'; "Honda" >>> cars [undefined, undefined, undefined, undefined, undefined, "Volvo", undefined, undefined, undefine
>>> var cars = new Array;
undefined
>>> cars[5] = 'Volvo';
"Volvo"
>>> cars[10] = 'Honda';
"Honda"
>>> cars
[undefined, undefined, undefined, undefined, undefined, "Volvo", undefined, undefined, undefined, undefined, "Honda"]
>>> cars.length
11
有没有一种方法可以让汽车中的新阵列不稀疏-比如['Volvo','Honda']
。实际上,在我的例子中,即使是值的顺序也不重要
当然,我可以通过循环来实现,但我正在寻找更优雅的解决方案jQuery
也是一个选项
cars = $.grep(arr, function(n){
return(n);
});
这只留下数组中已定义的元素,而忽略未定义的元素
这只留下数组中已定义的元素,而忽略未定义的元素
阵列是否自动展平,以便:
var flattenedArr = $.map(cars, function(v) {
return v;
});
阵列是否自动展平,以便:
var flattenedArr = $.map(cars, function(v) {
return v;
});
如果不关心键,为什么需要显式指定键?已经回答过:嗯,我通过项id为数组编制索引,每个id指向一个对象。我需要将对象作为简单列表提供给第三方库。您也可以使用类似稀疏数组的对象。使用$.each()遍历对象。正如我建议使用对象一样。你甚至不需要一个库来迭代对象,在现代浏览器上,你只需要使用for-in循环。如果你不关心它们,为什么你需要显式地指定键呢?已经回答过了:好吧,我用项目id索引我的数组,每个id指向一个对象。我需要将对象作为简单列表提供给第三方库。您也可以使用类似稀疏数组的对象。使用$.each()遍历对象。正如我建议使用对象一样。您甚至不需要一个库来迭代对象,在现代浏览器上,您只需使用for-in循环即可。这是一个很好的解决方案,只需注意一点:通过这种方式可以从数组中消除falsy值。我猜返回类型为n!='未定义'
在这方面会做得更好。这是一个很好的解决方案,只需注意:通过这种方式将从数组中消除错误值。我猜返回类型为n!='未定义'
在这方面会做得更好。它是否删除了任何虚假的值或只是未定义的值?编辑:nvm,我现在看到了小提琴:)这是因为jQuery带有null
所以null==undefined//true
它是否删除了任何虚假的值或只是未定义的值?编辑:nvm,我现在看到了小提琴:)这是因为jQuery带有null
sonull==undefined//true