【发布时间】:2017-05-05 15:51:27
【问题描述】:
我正在使用 Angular 2 / Typescript。
我有一个“项目”数组:
items: [
{
"id": 1,
"qty" undefined
},
{
"id": 2,
"qty" undefined
}
{
"id": 3,
"qty" undefined
}...etc
]
然后我有一个“ItemsWithQuantities”数组:
itemsWithQuantities: [
{
"id": 1,
"qty" 55
},
{
"id": 2,
"qty" 3
} ...etc
]
我想将 itemsWithQuantities 数组中的 qty 值放入 items 数组中匹配(id)对象的 qty 属性中。显然,我可以创建一个循环和嵌套循环来查找匹配项并设置属性值,但我对重构/雄辩的解决方案更感兴趣。我想知道 typescript/“新” JS 风格甚至 lodash 中是否有内置的东西可以得到我想要的东西。
【问题讨论】:
-
如果数组是排序的那么这是一个简单的迭代(如果不是,那么先排序,你将无法得到更好的解决方案)。
-
你为什么不直接做
items = itemsWithQuantities? -
@Redu 我想这在技术上并不是对实际问题的回答。但是,我一直认为这在架构上可能是更好的选择。但是要直接回答你的问题……我的 itemsWithQuantities 对象与我的 items 对象“看起来”并不完全相同。只有 ID 和数量匹配。两个对象都具有其他对象不存在的独特属性。 (加上数组的长度会有所不同:
items.length == 230而itemsWithQuantities.length == 5)但无论如何,我想我明白你在说什么 -
嗯,这就是为什么它是一个评论......此外,如果你想打破引用你也可以像
items = itemsWithQuantities.slice(); -
好吧,那么问题不完整.. 好吧,
itemsWithQuantities让items数组的所有对象都具有相同的 id,仅此而已。我的意思是数组项之间是否存在一对一的相关性?
标签: javascript arrays javascript-objects