在jQuery中创建关联数组

15

这是我目前为止的内容,鞋子种类依次为靴子、雨靴、皮鞋、运动鞋

我想要遍历并分配值,这样我就可以拥有类似于下面这样的东西

var shoeArray = { boots : '3', wellingtons: '0', leather : '1', trainers: '3'};

目前我只收到一个数组{3,0,1,3},虽然我可以使用它,但并不是很有帮助。

function shoe_types() {
    var shoeArray = [];
    $('[type=number]').each(function(){
        $('span[data-field='+$(this).attr('id')+']').text($(this).val());      
        shoeArray.push ( parseInt($(this).val()) );      
    });             
    return shoeArray;        
}

7
JS中没有“关联数组”,您所说的是对象。一些阅读材料: http://www.w3schools.com/js/js_objects.asp - Joren
鞋子类型已经固定 - 只有四种类型,而且将永远如此。 - LeBlaireau
1
@Roscoeh 我认为 $(this).attr('id') 包含了鞋子类型。 - zzlalani
2
在JavaScript中,数组应该表示为[3,0,1,3],而不是{3,0,1,3} - Paul D. Waite
5个回答

29

检查这个函数

function shoe_types() {
    var shoeArray = {}; // note this
    $('[type=number]').each(function(){
       $('span[data-field='+$(this).attr('id')+']').text($(this).val());
       shoeArray[$(this).attr('id')] =  parseInt($(this).val()) ;
    });
    return shoeArray;

}

PS:假设$(this).attr('id')包含了所有鞋子类型。


11

在JavaScript中,关联数组与对象相同。

例如:

var a = {};
a["name"] = 12;
a["description"] = "description parameter";
console.log(a); // Object {name: 12, description: "description parameter"}

var b = [];
b["name"] = 12;
b["description"] = "description parameter";
console.log(b); // [name: 12, description: "description parameter"]

你是不是想在变量 b 中使用花括号? - Mark
2
我不这么认为,@Mark。 - melvin

7
你想要的是一个返回对象 {} 的函数。

在线演示

function shoe_types(){
   var shoeObj = {};
   $('[name="number"]').each(function(){
     shoeObj[this.id] = this.value;
   });
   return shoeObj;
}

shoe_types(); // [object Object]

2
你可以尝试使用以下方法在jquery中创建关联数组:

你可以尝试使用以下方法在jquery中创建关联数组:

var arr = {};
$('[type=number]').each(function(){
    arr.push({
         $(this).attr('id'): $(this).val()              
     });
});

console.log(arr);

这将允许您通过ajax发送您想要传递的所有数据,只需将它们放入数组中即可。

0

如果$(this).attr('id')是鞋子的类型,你可以尝试一下。

shoeArray[$(this).attr('id')] = parseInt($(this).val());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接