Javascript jQuery$。每次推送(此)都无法正常工作
实际上,我想创建一个简单的阵列度假村Javascript jQuery$。每次推送(此)都无法正常工作,javascript,jquery,arrays,Javascript,Jquery,Arrays,实际上,我想创建一个简单的阵列度假村 var preSelected = "13_335 14_555"; var arrayClasses = preSelected.split(' '); var arrayClassesSorted = new Array(); $.each(arrayClasses, function() { //var elCount = $("li."+ this).size(); elCount = 20 ...... ; arrayClassesSorted[
var preSelected = "13_335 14_555";
var arrayClasses = preSelected.split(' ');
var arrayClassesSorted = new Array();
$.each(arrayClasses, function() {
//var elCount = $("li."+ this).size();
elCount = 20 ...... ;
arrayClassesSorted[elCount] = this;
....
});
结果应该是一个如下所示的数组(如果没有li类,计数器将无法工作…):
但我得到的结果是:
[20] => Array
(
[0] => 1
[1] => 4
[2] => _
[3] => 5
[4] => 5
[5] => 5
)
现在我想知道,为什么“这个”会为这个数组创建第二个维度
如果把这个放进字符串(this),它的作用就是。但是在这种情况下,这真的是“this”所期望的结果吗?我认为这正是控制台向您展示的,它实际上并不意味着您有一个二维数组。不要把你看到的一切都当作真理 您正在指定字符串对象而不是字符串原语,并且控制台将该对象视为类似数组的对象,因为它具有
.length
和数字属性
以下是Chrome控制台为字符串对象和字符串原语打印的内容:
> console.log(new String('foo'));
String {0: "f", 1: "o", 2: "o"}
undefined
> console.log('foo');
foo
undefined
应始终避免使用字符串对象,因为它们可能导致意外行为:
> new String('foo') === 'foo'
false
最好指定原语值:
$.each(arrayClasses, function(val) {
//var elCount = $("li."+ this).size();
elCount = 20 ...... ;
arrayClassesSorted[elCount] = val;
....
});
您可能会问:“string对象来自哪里?” 您正在将此
分配给数组:
arrayClassesSorted[elCount] = this;
而此
将始终是一个对象(原始值将转换为对象),除非函数在中运行。已更新。实际上我以为这个
会变成未定义的
,但是这个值并没有转换成一个对象。
arrayClassesSorted[elCount] = this;