尝试将数组的数组(其中内部数组只存储了两个值)转换为对象。
这是我目前得到的:
function fromListToObject(array) {
var obj = {};
for (i in array) {
obj[array[i[0]]] = array[i[1]];
};
return obj
};
A1=[['make', 'Ford'], ['model', 'Mustang'], ['year', 1964]];
console.log(fromListToObject(A1));
但是它给了我一个对象,其中的键是数组对,而值是“未定义的”。
哈普
6条答案
按热度按时间0dxa2lsx1#
在ES6中,您可以使用
Object.assign
用于新对象,...
用于将数组作为参数,Array#map
用于返回数组中的单个对象,mbzjlibv2#
您可以按如下方式使用
Array.prototype.reduce()
:rhfm7lfc3#
将您的代码更改为:
你在获取数组值时写错了语法。
wlwcrazw4#
Object.fromEntries
方法可以简单地做到这一点更多关于
Object.fromEntries()
-https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntriesf5emj3cl5#
试试这个:
它将所有数组平铺成一个具有以下键值对的大对象:
2vuwiymt6#
如果您正在使用TS并收到此类错误消息:“spread参数必须具有元组类型或传递给rest参数。ts(2556)”
因为你使用的是spread操作符,在这种情况下,你传递给目标对象的参数不止一个(assing方法的第一个参数),所以你必须首先“封装”你的数组。
就像这样:
const object = Object.assign([...yourArray].map( ([k, v]) => ( {[k]: v} ) ));
应该可以的您可以查看更多关于这个主题的信息:A spread argument must either have a tuple type or be passed to a rest parameter React