关联数组上的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() + '">');