如何将数组或对象映射到对象?

BL4CKY

通常,map方法返回一个数组,但我有很多用例,我想改为创建一个对象。是否有 JavaScript 本机方式来执行此操作或非常简单且高性能的实现?也欢迎使用 jQuery 解决方案。

这是原生 Array 映射方法的工作方式(EcmaScript 6):

console.log( [ 1, 2, 4 ].map( item => item * 10) );
// => [ 10, 20, 40 ]

这就是我想象的工作方法(如果它是 JavaScript 原生的):

console.log( [ 1, 2, 4 ].mapToObject(resolveMultiplyWithTen) );
// => { 1: 10, 2: 20, 4: 40 }

在此示例中,方法mapToObject 的行为应与map相同,但返回的是 Object 而不是 Array。回调resolveMultiplyWithTen会将项目乘以 10。

我在这里看到的一个问题是回调函数不能返回两个值(键和值,例如:1 和 20),这是有效创建对象所必需的。

这就是我总是用来从数组创建对象的方式:

/* Loop over Array and create key:value pairs in Object */
const arr = [ 1, 2, 4];
const obj = {};
for ( let i = 0; i < arr.length; i++ )
  obj[arr[i]] = arr[i] * 10;
console.log(obj);
// => { 1: 10, 2: 20, 4: 40 }

这是我能想到的最合适的解决方案:

/* Create an Object of each item via map and apply to Object.assign */
console.log(Object.assign.apply(null, [ 1, 2, 4 ].map( item => {
  const out = {};
  out[item] = item * 10;
  return out;
})));
// => { 1: 10, 2: 20, 4: 40 }

是否有针对此问题的原生 JavaScript 解决方案或更高效的方法?

代码狂人

你可以只使用reduce

let obj = [ 1, 2, 4 ].reduce( (op,inp) => (op[inp] = inp * 10, op),{} )

console.log(obj)

或者你可以使用 forEach

let data = [ 1, 2, 4 ]
let obj = {}

data.forEach(val=>{
  obj[val] = val * 10
})

console.log(obj)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将异构JSON数组映射到Java对象?

来自分类Dev

如何将@RequestParam映射到对象?

来自分类Dev

如何将两个对象映射到 Angular 中的对象数组?

来自分类Dev

如何将对象数组映射到Q Promise数组

来自分类Dev

如何将对象数组映射到Q Promise数组

来自分类Dev

如何将数组数组映射到属性和值之类的对象?

来自分类Dev

如何将对象值映射到可观察数组

来自分类Dev

JAXB-如何将xml数组映射到对象列表

来自分类Dev

JavaScript:如何将具有嵌套数组的对象映射到表以进行React

来自分类Dev

JAXB-如何将xml数组映射到对象列表

来自分类Dev

如何将字典映射到特定类的对象?

来自分类Dev

如何将C#类映射到角度对象

来自分类Dev

如何将ISO日期映射到Date对象

来自分类Dev

如何将列映射到复杂对象

来自分类Dev

如何将余烬对象层次结构映射到Haxe

来自分类Dev

我们如何将变量映射到对象?

来自分类Dev

如何将数据从服务映射到本地JSON对象

来自分类Dev

如何将 json 对象映射到特定的 json 结构

来自分类Dev

如何将响应映射到 Angular 7 中的对象

来自分类Dev

将数组映射到对象数组

来自分类Dev

JQ将数组映射到具有索引的对象-如何

来自分类Dev

将 javascript 对象映射到数组结构

来自分类Dev

如何将对象映射中的数组映射到另一个数组

来自分类Dev

Dataweave 2如何将对象映射到对象的JSON数组

来自分类Dev

Dataweave 2如何将对象映射到对象的JSON数组

来自分类Dev

如何将数组映射到哈希

来自分类Dev

如何使用自动映射器将二维数组映射到“数组对象”的集合?

来自分类Dev

如何让mybatis将列表映射到对象

来自分类Dev

如何将嵌套对象映射到现有的嵌套对象?

Related 相关文章

热门标签

归档