我有一个数组:
[
{
assignmentId:17,
email:"john.smith@email.com"
expectation: "Make sure to proofread!",
firstName:"John"
id:23
ignoreForFeedback: true
lastName:"Smith"
level:2
levelFraction:null
score:35
},
{
assignmentId:17
countsPerCategory: Array(4)
email:"john.smith@email.com"
firstName:"John"
frequentErrors: Array(5)
id:23
ignoreForGrading: true
lastName:"Smith"
},
{
assignmentId:17,
email:"cl@email.com"
expectation: "cite sources",
firstName:"Cindy"
id:45
ignoreForFeedback: true
lastName:"Lee"
level:2
levelFraction:null
score:32
},
{
assignmentId:17
countsPerCategory: Array(4)
email:"cl@email.com"
firstName:"Cindy"
frequentErrors: Array(5)
id:45
ignoreForGrading: true
lastName:"Lee"
}
]
我想将具有相同“ID”的对象组合成数组中的相同对象。它们的共同密钥也应该组合在一起(例如:'名字'、'电子邮件')。有人能建议做这件事的最好方法吗?使用ES6或Lodash
您可以使用LODASH#GROUPBY
按ID
对数组中的所有项进行分组,然后使用LODASH#MAP
的迭代对象LODASH#Assign
,该迭代对象用LODASH#Spread
包装,使数组作为LODASH#AssGIN
的参数列表进行回调。
var result = _(array)
.groupBy('id')
.map(_.spread(_.assign))
.value();
var array = [
{
assignmentId:17,
email:"john.smith@email.com",
expectation: "Make sure to proofread!",
firstName:"John",
id:23,
ignoreForFeedback: true,
lastName:"Smith",
level:2,
levelFraction:null,
score:35
},
{
assignmentId:17,
countsPerCategory: Array(4),
email:"john.smith@email.com",
firstName:"John",
frequentErrors: Array(5),
id:23,
ignoreForGrading: true,
lastName:"Smith"
},
{
assignmentId:17,
email:"cl@email.com",
expectation: "cite sources",
firstName:"Cindy",
id:45,
ignoreForFeedback: true,
lastName:"Lee",
level:2,
levelFraction:null,
score:32
},
{
assignmentId:17,
countsPerCategory: Array(4),
email:"cl@email.com",
firstName:"Cindy",
frequentErrors: Array(5),
id:45,
ignoreForGrading: true,
lastName:"Lee"
}
];
var result = _(array)
.groupBy('id')
.map(_.spread(_.assign))
.value();
console.log(result);
body > div { min-height: 100%; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>
这是一个对象的输入数组 结果应该是这样的
我有三个数据帧。它们都有一个公共列,我需要基于公共列合并它们,而不丢失任何数据 输入 预期输出
问题内容: 我有: 我想将其转换为该对象: 在Python中,有一个简单的习惯用法。jQuery或纯Javascript中是否有类似的东西,还是我必须做很长一段路? 问题答案: 简单的JS函数将是: 当然,您实际上也可以实现zip等功能,因为JS支持更高阶的类型,这使这些函数语言主义变得容易:D
问题内容: 什么是重组的最佳方式进入?我需要将所有值键(无论是否为数组)合并到共享相同名称键的对象中 是的,我可以编写无限循环和介于两者之间的多个数组,但是是否有一个简单的快捷方式?谢谢! 问题答案: 这是一个选择:
我有两个数组: 阵列 1: 和阵列 2: 我需要根据合并这两个数组并得到这个: 不通过< code>Object.keys进行迭代,我如何做到这一点?
如何根据属性值从数组中删除所有对象? 在上面的代码中,它只删除一个对象。如何删除所有if匹配项?