[英]Javascript using Lodash, convert array to plain object, without keys
const arr = [{a:'1',b:'b',c:'c'},{a:'9',b:'b',c:'c'},{a:'3',b:'b',c:'c'}] const g = _.toPlainObject(arr) console.log(_.mapValues(g))
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
问题是我如何在结果中每个 object 前面的索引键0,1,2
中获得骑乘,并且基于每个 object 的值具有非常简单的对象。 预期结果:
{
"1": {
"a": "1",
"b": "b",
"c": "c"
},
"9": {
"a": "9",
"b": "b",
"c": "c"
},
"3": {
"a": "3",
"b": "b",
"c": "c"
}
}
您可以使用Array.reduce重新映射 object。 不需要图书馆。
如果您不熟悉reduce,我知道这段代码看起来很神秘。 我 promise 它并不像看起来那么复杂。 阅读减少的工作原理,你会没事的。 (而且我不确定我在代码中的解释性注释是否有帮助,或者只是让它更难阅读。)
const arr = [{a:'1',b:'b',c:'c'},{a:'9',b:'b',c:'c'},{a:'3',b:'b',c:'c'}] const result = arr.reduce( // called for each item in arr. merges the current item and returns the result. (acc, {a, ...other}) => ( // pull the 'a' value, collect remaining properties in 'other' {...acc, // keep prior iterations [a]: { a, ...other } // set the value of 'a' as a key, whose value is this iteration's entry }), {} // start with an empty object ); console.log(result);
这不是一个有效的数据结构,并且违反了 javascript 中的objects
规则。 object 或 python 中的字典将始终以键和值对的形式形成,例如{ key: value }
您可以使用Object.values()
获取每个键的值。 这将返回一个对象数组,其中包含您可以使用的所有值。 但总的来说,您的数据结构不正确。
使用_.mapKeys()
从对象的值中获取键。
注意:由于值是数字(整数字符串),object 属性将按升序显示。
const arr = [{a:'1',b:'b',c:'c'},{a:'9',b:'b',c:'c'},{a:'3',b:'b',c:'c'}] const result = _.mapKeys(_.toPlainObject(arr), o => oa) console.log(result)
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.