如何用jQuery将两个数组转换为指定格式的键值对集合?
解决方案
你的问题出在对象字面量的属性名写法上——直接写i会被当作字符串"i",而不是引用变量X[i]的值。下面是两种实现方式,包括原生JS和你提到的jQuery写法:
原生JavaScript修正版
var X = [1,3,5]; var Y = ["X", "Y", "Z"]; var myArray = []; for (var i = 0; i < X.length; i++) { var obj = {}; // 用方括号语法动态设置属性名 obj[X[i]] = Y[i]; myArray.push(obj); } // 最终结果:[{1: "X"}, {3: "Y"}, {5: "Z"}]
jQuery实现版
如果一定要用jQuery,可以用$.each遍历数组:
var X = [1,3,5]; var Y = ["X", "Y", "Z"]; var myArray = []; $.each(X, function(index, key) { var obj = {}; obj[key] = Y[index]; myArray.push(obj); });
关键说明
在JavaScript中,对象的属性名有两种写法:
- 点语法:
obj.key,这里的key是固定字符串,无法使用变量 - 方括号语法:
obj[变量],可以动态传入变量作为属性名,这正是你需要的写法
内容的提问来源于stack exchange,提问作者HTML Man
相关产品推荐
相关产品推荐

