我在一个集合实例中有多个具有相同键但不同值的对象。我需要一种方法添加数量字段键值在相同的对象。
[
0 => {
+"product_id": 1
+"quantity": "50"
+"price": "25.00"
},
1 => {
+"product_id": 3
+"quantity": "50"
+"price": "75.00"
},
2 => {
+"product_id": 2
+"quantity": "50"
+"price": "50.00"
},
3 => {
+"product_id": 3
+"quantity": "50"
+"price": "75.00"
}
]
结果实例应该在相同的项键中添加数量,如下所示。
[
0 => {
+"product_id": 1
+"quantity": "50"
+"price": "25.00"
},
1 => {
+"product_id": 2
+"quantity": "50"
+"price": "50.00"
}
2 => {
+"product_id": 3
+"quantity": "100"
+"price": "75.00"
}
]
我已经尝试遍历所有对象并添加/编辑对象,如下所示。我不确定这是不是Laravel收集中最好的练习方式。
$newItems = [];
$items->each(function ($item, $key) use ($items) {
$existId = array_column($items, 'id');
if($existId){
// add quantity to the existing item
} else {
// push item to items array
}
});
您可以使用集合方法reduce
创建一个新集合,您可以在其中添加新集合中尚未添加的项目,或者将其数量相加:
$total = $items->reduce(
// The function that will insert or add the items together.
function ($carry, $item) {
if ($carry->has($item->product_id)) {
$carry[$item->product_id]->quantity += $item->quantity;
} else {
$carry[$item->product_id] = $item;
}
return $carry;
},
// The initial empty collection that will be filled up every iteration.
collect([])
);
我有一个POJO类,它已经定义了equals和hashcode,并用于许多保存到DB的遗留对象,因此不能改变该对象的工作方式。 她是一个简化的代码: 因此,我想基于雇员、startDate和contractCost将福利合同添加到中,以便消除基于这些字段的同一雇员的重复合同。 如果我不能重新定义equals和hashcode,那该怎么做呢?
我有以下人物班- <代码>人。java - 现在,我有以下TreeClass实例- 打印时- 很明显,两个人的例子-
我有3个实体类,它们彼此之间有关系 TestClassParent: TestClassChild: TestChildCollection: 当前我的数据库如下所示: 关系: 通过比较对象的电子邮件来实现对象的均衡 我有测试这个案例的代码: 我对这些物体的比较结果是错误的 我找了调试,发现第一个实例在电子邮件中有hashcode,另一个实例没有第一个: 第二个:
这应该是非常简单的,但我还没有得到它的工作。 为什么我得到: 我想得到的是:
问题内容: 什么类型的Java集合可为同一键返回多个值? 例如,我想为键300返回301,302,303。 问题答案: 您可以使用a 作为您的值: 另外,您可以按照biziclop的建议从Guava 中使用它,它的语法更加简洁,并且还有许多其他非常有用的实用程序方法:
问题内容: 似乎以下代码应返回true,但返回false。 这有什么意义? 问题答案: 常规()和严格()相等之间的唯一区别是,严格相等运算符禁用类型转换。由于已经在比较两个相同类型的变量,因此使用的相等运算符的类型无关紧要。 不管您使用常规相等还是严格相等,对象比较仅 在您比较相同的精确对象时得出 。 也就是说,给定,,,但。 两个不同的对象(即使它们都具有零或相同的精确属性)也永远不会相等地进
本文向大家介绍Javascript搜索集合中的对象键,包括了Javascript搜索集合中的对象键的使用技巧和注意事项,需要的朋友参考一下 JavaScript中的Set类提供了一个has方法来搜索给定set对象中的元素。如果要在集合中搜索对象,则需要提供对该对象的引用。具有不同内存地址的相同对象不视为相等。此方法可以如下使用- 示例 输出结果
我有一个ArrayList<code>data</code>,其中包含<code>Person</code>类型的Objects,它每n秒更新一次,并具有现有数据的总量。为了在表中显示这些数据,我使用<code>clear()</code>一个ObservableList,并使用<code>addAll(data)</ccode>来避免GUI阻塞。 我想使用HashSet作为Observable