我有:
var keys = [ "height", "width" ];
var values = [ "12px", "24px" ];
我想把它转换成这个对象:
{ height: "12px", width: "24px" }
在 Python 中,有一个简单的 idiom dict(zip(keys,values))
。jQuery 或纯 JavaScript 中是否有类似的东西,或者我必须长期这样做吗?
我有:
var keys = [ "height", "width" ];
var values = [ "12px", "24px" ];
我想把它转换成这个对象:
{ height: "12px", width: "24px" }
在 Python 中,有一个简单的 idiom dict(zip(keys,values))
。jQuery 或纯 JavaScript 中是否有类似的东西,或者我必须长期这样做吗?
使用 Array 的最简单的 ES6 单行解决方案reduce
:
const keys = ['height', 'width'];
const values = ['12px', '24px'];
const merged = keys.reduce((obj, key, index) => ({ ...obj, [key]: values[index] }), {});
简单的 JS 函数是:
function toObject(names, values) {
var result = {};
for (var i = 0; i < names.length; i++)
result[names[i]] = values[i];
return result;
}
当然,您实际上也可以实现 zip 等功能,因为 JS 支持高阶类型,这使得这些功能语言主义变得容易:D
作为替代解决方案,我认为尚未提及:
var result = {};
keys.forEach((key, idx) => result[key] = values[idx]);
您可以使用map
方法组合两个数组,然后使用Object.fromEntries
.
var keys = ["height", "width"];
var values = ["12px", "24px"];
var array = keys.map((el, i) => {
return [keys[i], values[i]];
});
// → [["height", "12px"], ["width", "24px"]]
var output = Object.fromEntries(array);
// → {height: "12px", width: "24px"}
console.log(output);