关联数组上的Javascript SHIFT和POP

时间:2011-09-27 14:59:30

标签: javascript associative-array pop shift

使用常规数组我可以使用shift()pop()从数组中获取图像src;我想使用关联数组来添加名称和id。

单个阵列

var products = ['product1.jpg'];
$('#products').append('<img src="' + products.shift() + '">');

关联数组

var products = [{id:'1',name:'product 1',image:'product1.jpg'}];
$('#products').append('<img id="' + products.shift() + '" name="' + products.shift() + '" src="' + products.shift() + '">');

5 个答案:

答案 0 :(得分:2)

您正在使用一个充满对象的常规数组,因此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 + '">');

答案 1 :(得分:1)

这一行:var products = [{id:'1',name:'product 1',image:'product1.jpg'}];声明一个内部有一个值的数组。单个值是具有属性idnameimage的对象。当您在数组上调用shift时,返回的值将是此对象。

答案 2 :(得分:0)

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

for(var i =0; i < products.length; i++){
  var product = products[i];
  $('#products').append('<img id="' + product.id + '" name="' + product.name + '" src="' + product.image + '">');
}

答案 3 :(得分:0)

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 + '">');

循环播放

while(products.length>0){
    var currentProduct = products.shift();
    $('#products').append('<img id="' +  currentProduct.id + '" name="' + currentProduct.name + '" src="' + currentProduct.image + '">');
}

更好的性能循环是对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 );

答案 4 :(得分:0)

  1. 您可以缓存班次,并使用对象的属性:

    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 + '">');
    
  2. 您可以以不同方式存储值,作为多维数组:

    var products = [['1','product 1','product1.jpg']];
    var product  = products.shift();
    $('#products').append('<img id="' + product.shift()
                         + '" name="' + product.shift() 
                         + '" src="'  + product.shift() + '">');