最好的转换方式是什么:
['a','b','c']
to:
{
0: 'a',
1: 'b',
2: 'c'
}
最好的转换方式是什么:
['a','b','c']
to:
{
0: 'a',
1: 'b',
2: 'c'
}
当前回答
我会使用下划线,但如果没有的话我会使用reduce,初始值为空对象{}
>>> ['a', 'b', 'c'].reduce(function(p, c, i) {p[i] = c; return p}, {})
Object { 0="a", 1="b", 2="c"}
reduce应该在今天的大多数浏览器中广泛使用,参见MDN
其他回答
使用javascript lodash库。有一个简单的方法 _。[iteratee = _.identity] mapKeys(对象) 可以进行转换。
更多的浏览器支持和更灵活的方法是使用一个正常的循环,比如:
const arr = ['a', 'b', 'c'],
obj = {};
for (let i=0; i<arr.length; i++) {
obj[i] = arr[i];
}
但现代的方法也可以使用展开运算符,比如:
{...arr}
或对象赋值:
Object.assign({}, ['a', 'b', 'c']);
两者都会返回:
{0: "a", 1: "b", 2: "c"}
最短的答案:(使用解构)
const obj = { ...input }
例子:
const inputArray = ["a", "b", "c"]
const outputObj = { ...inputArray }
下面的方法将数组转换为具有特定给定键的对象。
/**
* Converts array to object
* @param {Array} array
* @param {string} key (optional)
*/
Array.prototype.ArrayToObject = function(key) {
const array = this;
const obj = {};
array.forEach((element, index) => {
if(!key) {
obj[index] = element;
} else if ((element && typeof element == 'object' && element[key])) {
obj[element[key]] = element;
}
});
return obj;
}
前任-
[{名称:“测试”},{名称:test1的}].ArrayToObject(“名字”);
会给
{test: {name: 'test'}, test1: {name: 'test1'}}
并且incase key没有作为参数提供给该方法
i.e. [{name: 'test'}, {name: 'test1'}].ArrayToObject();
会给
{0: {name: 'test'}, 1: {name: 'test1'}}
如果数组包含2元素数组,其中第一个元素是键,第二个元素是值,您可以使用reduce轻松地将其转换为对象。
[
["key1","value1"],
["key2", "value2"],
["key3", "value3"]
]
.reduce((acc, [key, value])=>({...acc, [key]: value}), {});
结果:
{
key1: 'value1',
key2: 'value2',
key3: 'value3'
}