Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.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 SHIFT和POP_Javascript_Associative Array_Shift - Fatal编程技术网

关联数组上的Javascript SHIFT和POP

关联数组上的Javascript SHIFT和POP,javascript,associative-array,shift,Javascript,Associative Array,Shift,使用常规数组,我可以使用shift()和pop()从数组中获取图像src;我想使用关联数组来添加名称和id,做同样的事情 单阵列 var products = ['product1.jpg']; $('#products').append('<img src="' + products.shift() + '">'); var-products=['product1.jpg']; $(“#产品”)。追加(“”); 关联数组 var products = [{id:'1',name

使用常规数组,我可以使用
shift()
pop()
从数组中获取图像src;我想使用关联数组来添加名称和id,做同样的事情

单阵列

var products = ['product1.jpg'];
$('#products').append('<img src="' + products.shift() + '">');
var-products=['product1.jpg'];
$(“#产品”)。追加(“”);
关联数组

var products = [{id:'1',name:'product 1',image:'product1.jpg'}];
$('#products').append('<img id="' + products.shift() + '" name="' + products.shift() + '" src="' + products.shift() + '">');
var-products=[{id:'1',name:'product1',image:'product1.jpg'}];
$(“#产品”)。追加(“”);

此行:
var-products=[{id:'1',name:'product1',image:'product1.jpg'}]声明一个数组,其中包含一个值。单个值是一个具有属性
id
name
image
的对象。在数组上调用
shift
时,返回的值将是此对象。

您使用的是一个充满对象的常规数组,因此shift和pop将起作用,但会返回对象

var products = [{id:'1',name:'product 1',image:'product1.jpg'}];
var prod = products.shift();
$('#products').append('<img id="' + prod.id + '" name="' + prod.name + '" src="' + prod.image + '">');
var-products=[{id:'1',name:'product1',image:'product1.jpg'}];
var prod=products.shift();
$(“#产品”)。追加(“”);
var-products=[{id:'1',name:'product 1',image:'product1.jpg'}];
对于(变量i=0;i
shift()将把整个对象从索引中拉出,而不是像您的示例中那样一块一块地拉出

您需要按名称访问对象才能获得所需的内容

var products = [{id:'1',name:'product 1',image:'product1.jpg'}, {id:'2',name:'product 2',image:'product2.jpg'}];

var currentProduct = products.shift();
$('#products').append('<img id="' +  currentProduct.id + '" name="' + currentProduct.name + '" src="' + currentProduct.image + '">');
var-products=[{id:'1',名称:'product1',图像:'product1.jpg'},{id:'2',名称:'product2',图像:'product2.jpg'}];
var currentProduct=products.shift();
$(“#产品”)。追加(“”);
循环通过它

while(products.length>0){
    var currentProduct = products.shift();
    $('#products').append('<img id="' +  currentProduct.id + '" name="' + currentProduct.name + '" src="' + currentProduct.image + '">');
}
while(products.length>0){
var currentProduct=products.shift();
$(“#产品”)。追加(“”);
}
更好的性能循环是一次对DOM的写入

var strOut = "";
while(products.length>0){
    var currentProduct = products.shift();
    strOut  += '<img id="' +  currentProduct.id + '" name="' + currentProduct.name + '" src="' + currentProduct.image + '">';
}
$('#products').append( strOut );
var strOut=”“;
而(产品长度>0){
var currentProduct=products.shift();
strOut+='';
}
$(“#产品”)。追加(strOut);
  • 可以缓存移位,并使用对象的属性:

    var products = [{id:'1',name:'product 1',image:'product1.jpg'}];
    var product  = products.shift();
    $('#products').append('<img id="' + product.id 
                         + '" name="' + product.name 
                         + '" src="'  + product.image + '">');
    
    var-products=[{id:'1',name:'product1',image:'product1.jpg'}];
    var product=products.shift();
    $(“#产品”)。追加(“”);
    
  • 可以将值以不同方式存储为多维数组:

    var products = [['1','product 1','product1.jpg']];
    var product  = products.shift();
    $('#products').append('<img id="' + product.shift()
                         + '" name="' + product.shift() 
                         + '" src="'  + product.shift() + '">');
    
    var-products=[['1','product1','product1.jpg'];
    var product=products.shift();
    $(“#产品”)。追加(“”);
    

  • 请注意,JavaScript中的“规则数组”也是关联数组。只是他们得到了一堆额外的数组方法——但它们仍然是关联数组。请注意,你的答案并没有回答这个问题。我认为我的答案为OP提供了足够的信息,让他自己意识到这个问题,并且在为他编写代码之前就停止了。我稍微编辑了一下。我尝试了其中的几个,它们都很有效,我感谢所有的帮助。谢谢大家!对于我正在工作的项目,我能够做一些细微的改变。根据芬巴尔的解释,我学到了足够多的知识,可以教我如何使它从单个数组变为关联数组。但是,他们都成功了。谢谢
    var products = [['1','product 1','product1.jpg']];
    var product  = products.shift();
    $('#products').append('<img id="' + product.shift()
                         + '" name="' + product.shift() 
                         + '" src="'  + product.shift() + '">');