Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery$。每次推送(此)都无法正常工作_Javascript_Jquery_Arrays - Fatal编程技术网

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;