如果数组包含重复项,则将两个值合并为一个
Posted
技术标签:
【中文标题】如果数组包含重复项,则将两个值合并为一个【英文标题】:if array contains duplicate, merge both values as one 【发布时间】:2021-11-12 07:21:07 【问题描述】:我有一个看起来像这样的数组:
有没有一种方法,当另一个对象“AAPL”被添加到数组中时,费用和金额被添加并且 AAPL 将一个对象保留在数组中?
提前谢谢你!
【问题讨论】:
是的,您可以编写代码来执行此操作。如果 Stack Overflow 无法正常工作但不会为您编写代码,则 Stack Overflow 可以帮助您处理现有代码。 您的问题的答案是,“是的,有办法”。您可以尝试通过提高对函数和数组原型的理解来自己解决问题,或者请/付钱给某人为您解决问题。然而,*** 不是这个地方。 【参考方案1】:我不想假设“AAPL”总是在数组中。
首先检查新项目是否在数组中。如果没有,我将返回并结束通话(但您可能希望将其附加到数组中,因为它是一个新项目)。
如果是,则替换当前对象(或部分对象,在这种情况下,我只做了费用和金额)
function addPortfolioItem(item)
const index = returnPortfolioHoldingIndex(item);
if (index = -1)
// Returning if not found - You may wish to append to the array as mentioned above
return;
else
// Overwrite the object within the array with the new object
portfolioHoldings[index].fees = item.fees;
portfolioHoldings[index].amount = item.amount;
function returnPortfolioHoldingIndex()
const tickerSymbolToSearch = "AAPL";
return portfolioHoldings.findIndex(item => item.ticker_symbol === tickerSymbolToSearch);
【讨论】:
谢谢!这正是我所需要的。你是对的,AAPL 并不总是在数组中。但是你能帮我重写吗?抱歉,也许我必须清楚我的代码。我正在使用 GraphQl 来获取数组。 const 加载,错误,数据 = useQuery(PORTFOLIO_HOLDINGS);它记录了上面的屏幕截图。我必须使用“数据”而不是项目吗? 函数参数名称可以是任何名称,但您应该使用您所描述的数据调用该函数。 addPortfolioItem(数据);此函数调用会将数据的值复制到项目中,或者您可以重命名此数据。如果它解决了您的问题,请接受答案!【参考方案2】:首先识别条目,然后将另一个整数添加到值中。
这取决于您现在如何更新该对象 - 如果它始终处于 0 位置,那么只需投资组合Holdings[0][amount] += number;
如果不是,则遍历所有并检查ticker_symbol == AAPL,然后通过添加所需数量来更新该数组值。
【讨论】:
以上是关于如果数组包含重复项,则将两个值合并为一个的主要内容,如果未能解决你的问题,请参考以下文章