Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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:添加键值对文本,给出未定义的结果_Javascript_Jquery - Fatal编程技术网

Javascript:添加键值对文本,给出未定义的结果

Javascript:添加键值对文本,给出未定义的结果,javascript,jquery,Javascript,Jquery,我上次考试的时候它还可以,但现在它给我带来了困难。。基本上我有这个代码: var myOBJ = {}; for (var i = 0; i < myitems.length; i++) { myOBJ[i].itemtype = myitems.type; myOBJ[i].name = myitems.name; } 有人能告诉我我遗漏了什么吗?您必须在试图创建的每个元素中初始化一个对象,所以基本上要这样做: var myOBJ = {}; f

我上次考试的时候它还可以,但现在它给我带来了困难。。基本上我有这个代码:

    var myOBJ = {};
   for (var i = 0; i < myitems.length; i++) {

    myOBJ[i].itemtype = myitems.type;
    myOBJ[i].name = myitems.name;

   }

有人能告诉我我遗漏了什么吗?

您必须在试图创建的每个元素中初始化一个对象,所以基本上要这样做:

var myOBJ = {};
for (var i = 0; i < myitems.length; i++) {
    // Create a new object here.
    myOBJ[i] = {};
    myOBJ[i].itemtype = myitems.type;
    myOBJ[i].name = myitems.name;
}
现在我不知道您的
myitems
对象是如何工作的,但是如果它包含两个名为
name
type
的键,那么您实际上无法对它进行数字迭代,因为它是一个对象,因此没有
length
属性。所以你可能会在那里出错。假设它实际上是一个包含嵌套对象的数组,这些嵌套对象包含
type
name
,您可以轻松地对其进行迭代,然后使用
push()
向数组中添加
object literal
,如下所示:

var myOBJ = [];
for (var i = 0; i < myitems.length; i++) {
    // Create and push new object here.
    myOBJ.push({
        itemtype : myitems[i].type,
        name     : myitems[i]. name
    });
}
var myOBJ=[];
对于(var i=0;i
您必须在试图创建的每个元素中初始化一个对象,因此基本上要这样做:

var myOBJ = {};
for (var i = 0; i < myitems.length; i++) {
    // Create a new object here.
    myOBJ[i] = {};
    myOBJ[i].itemtype = myitems.type;
    myOBJ[i].name = myitems.name;
}
现在我不知道您的
myitems
对象是如何工作的,但是如果它包含两个名为
name
type
的键,那么您实际上无法对它进行数字迭代,因为它是一个对象,因此没有
length
属性。所以你可能会在那里出错。假设它实际上是一个包含嵌套对象的数组,这些嵌套对象包含
type
name
,您可以轻松地对其进行迭代,然后使用
push()
向数组中添加
object literal
,如下所示:

var myOBJ = [];
for (var i = 0; i < myitems.length; i++) {
    // Create and push new object here.
    myOBJ.push({
        itemtype : myitems[i].type,
        name     : myitems[i]. name
    });
}
var myOBJ=[];
对于(var i=0;i
您的
myOBJ
的单个元素最初未定义

必须创建一个新对象以包含以下属性:

myOBJ[i] = {};
myOBJ[i].itemtype = myitems.type;
myOBJ[i].name = myitems.name
或者,更有效的方法是,使用对象文字初始化它:

myOBJ[i] = {
    itemtype: myitems.type,
    name: myitems.name
};

由于您只使用数值索引,您还应该考虑使用数组<代码> []/COD>而不是对象<代码> {} /代码>变量<代码> MyObj .< /P> < P>您的各个元素<代码> MyObj最初是未定义的。 必须创建一个新对象以包含以下属性:

myOBJ[i] = {};
myOBJ[i].itemtype = myitems.type;
myOBJ[i].name = myitems.name
或者,更有效的方法是,使用对象文字初始化它:

myOBJ[i] = {
    itemtype: myitems.type,
    name: myitems.name
};

由于您只使用数值索引,您还应该考虑使用数组<代码> []/COD>而不是对象<代码> {} /代码>变量<代码> MyObj .< /P> < P>您不能通过索引访问对象文字,必须通过<强>键< /强>访问. 如果

myOBJ
是一个数组,那么您可以通过索引访问它。或者,如果
myOBJ
的键是数字,那么代码就可以工作了

如果您先实例化每个对象,您可以很容易地将每个键设置为一个数字,然后通过某种伪索引访问每个对象

myOBJ[i] = {};
这将输出如下内容:

{
    1: {};
    //etc.
}

但是为什么不简单地将
myOBJ
设置为数组呢?

您不能通过索引访问对象文本,必须通过键访问它

如果
myOBJ
是一个数组,那么您可以通过索引访问它。或者,如果
myOBJ
的键是数字,那么代码就可以工作了

如果您先实例化每个对象,您可以很容易地将每个键设置为一个数字,然后通过某种伪索引访问每个对象

myOBJ[i] = {};
这将输出如下内容:

{
    1: {};
    //etc.
}

但为什么不简单地将
myOBJ
制作成一个数组呢?

如果您只想将
myitems
中的值复制到
myOBJ
中的另一个对象,我建议您将
myOBJ
更改为
数组,在循环中创建一个临时对象,并将该临时对象添加到myOBJ数组中

   var myOBJ = [];
   for (var i = 0; i < myitems.length; i++) {
    var item = myitems[i];
    var temp = {
      'itemtype' : item.type,
      'name' : item.name
    };
    myOBJ[i] = temp; // (or) myOBJ.push(temp);
   }
var myOBJ=[];
对于(var i=0;i

您甚至可以保留
myOBJ={}
,但它将只是一个对象,每个属性都是一个语义上与数组相同的
Number
,因此请改用数组。

如果您只想将值从
myitems
复制到
myOBJ
中的另一个对象,我建议您将
myOBJ
更改为
Array
,在循环中创建一个临时对象,并将该临时对象添加到myOBJ数组中

   var myOBJ = [];
   for (var i = 0; i < myitems.length; i++) {
    var item = myitems[i];
    var temp = {
      'itemtype' : item.type,
      'name' : item.name
    };
    myOBJ[i] = temp; // (or) myOBJ.push(temp);
   }
var myOBJ=[];
对于(var i=0;i

您甚至可以保留
myOBJ={}
,但它将只是一个对象,每个属性都是一个
Number
,在语义上与数组相同,因此,请改用数组。

myitems的结构是什么?

您必须调试代码或打印myOBJ将返回的内容。知道myitems的内部内容(至少其结构)可能会有所帮助。myitems没有问题…我收到它的值,@dfsq
myitems
的结构是什么?您必须调试代码或打印myOBJ将返回的内容。知道
myitems
中的内容(至少它的结构)可能会有所帮助。myitems没有问题……我收到了它的值,@dfsq实际上,您可以用与
数组
相同的方式使用它,它只是没有长度属性(因此
{0:“零”,1:“一”,2:“二”}
是一个函数等价于
[“零”,“一”,“二”]
条长度属性和它没有数字排序的事实(因此它可以是
{1:“一”,0:“零”,2:“二”}
)@something是的,你说得对