2011-09-27 89 views
2

使用规则阵列我能够抓住从使用shift()pop()数组中的图片src;我想用关联数组来做同样的事情来添加一个名字和id。的Javascript SHIFT和POP的关联数组

单个阵列

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

注意,“规则排列”在JavaScript也是关联数组。只是他们得到了一堆额外的数组方法 - 但它们仍然是关联数组。 –

回答

1

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

+0

请注意,您的答案不回答问题。 –

+0

我认为我的答案为OP提供了足够的信息来自己实现这个问题,并停止为他编写代码。我已经稍微编辑了一下。 – Finbarr

+0

我尝试了其中的几个,他们都工作,我感谢所有帮助。感谢大家!对于我正在工作的项目,我能够稍作改动。基于Finbarr的解释,我学到了足够的知识,教会了我必须做些什么才能使它从单个阵列工作到关联阵列。但是,他们都一直工作。谢谢! – Tim

2

您使用的规则阵列充分的对象,因此变速和流行会工作,但回报你的对象。

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

移()是要拉整个对象列的索引,而不是由一块一块的像在您的示例。

您需要通过名称来访问对象得到你想要的东西。

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