【问题标题】:Listing duplicate entries in an array of objects in JavaScript/Node.js在 JavaScript/Node.js 中列出对象数组中的重复条目
【发布时间】:2020-11-25 23:45:31
【问题描述】:

我有一个数组 offers,其中的对象看起来像这样:

{ 
    sellItem: {
        id: _, 
        quantity: _
    }, 
    buyItem: {
        id: _, 
        quantity: _
    }, 
    volume: _
}

我想查找重复项 - 表示具有相同“销售 ID”和“购买 ID”的报价。我还想在原始“offers”数组中记录这些项目的索引。

我尝试这样做了 2 天,但没有成功,因为我发现用可管理的行数写出我想做的事情太困难了。 StackOverflow 上的其他问题只涉及一个对象,而不是嵌套对象。

offers 数组的示例:

{sellItem: {id: Pizza, quantity: 2}, buyItem: {id: Dollar, quantity: 1}, volume: 1}
{sellItem: {id: Pizza, quantity: 3}, buyItem: {id: Dollar, quantity: 2}, volume: 1}
{sellItem: {id: Banana, quantity: 2}, buyItem: {id: Pound, quantity: 1}, volume: 1}
{sellItem: {id: Apple, quantity: 2}, buyItem: {id: Euro, quantity: 1}, volume: 1}
{sellItem: {id: Pizza, quantity: 5}, buyItem: {id: Dollar, quantity: 3}, volume: 1}

这里的预期结果:

0: Selling 2x Pizza for 1x Dollar
1: Selling 3x Pizza for 2x Dollar
4: Selling 5x Pizza for 3x Dollar

“offers”数组中的所有其他条目都应被忽略,因为它们不是重复的优惠。

【问题讨论】:

    标签: javascript node.js arrays object duplicates


    【解决方案1】:

    您可以使用filterfind 来搜索具有相同id 的另一个元素。

    const arr = [{sellItem: {id: 'Pizza', quantity: 2}, buyItem: {id: 'Dollar', quantity: 1}, volume: 1},
    {sellItem: {id: 'Pizza', quantity: 3}, buyItem: {id: 'Dollar', quantity: 2}, volume: 1},
    {sellItem: {id: 'Banana', quantity: 2}, buyItem: {id: 'Pound', quantity: 1}, volume: 1},
    {sellItem: {id: 'Apple', quantity: 2}, buyItem: {id: 'Euro', quantity: 1}, volume: 1},
    {sellItem: {id: 'Pizza', quantity: 5}, buyItem: {id: 'Dollar', quantity: 3}, volume: 1}];
    const res = arr.filter(({sellItem: {id}},idx)=>
       arr.find(({sellItem:{id:id2}},idx2) => idx !== idx2 && id === id2));
    console.log(res);

    【讨论】:

    • 哇!你只花了几十秒钟就想出了一些我花了 2 天时间才把头发扯掉的东西。非常感谢!我将研究这段代码以了解它是如何工作的。
    • @vxern 很高兴为您提供帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-05-09
    • 2020-05-20
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 2014-02-24
    • 2022-10-14
    • 1970-01-01
    相关资源
    最近更新 更多