【问题标题】:How to push similar object elements in single array using node js?如何使用节点 js 在单个数组中推送相似的对象元素?
【发布时间】:2020-05-08 19:38:43
【问题描述】:

我正在使用节点 js API 调用从 PostgreSQL 中检索一些数据。在这我使用 2 个不同的 pg 表。如果“unit_code”等于“fk_unit_code”,我正在检查条件,那么它应该结合“Group_individuals”列中的各个值并将其推送到数组中。为了获得“userData”,我正在两个表之间进行左连接。我已经尝试过下面的代码,但它在 for 循环的每次迭代中推送单行。

function buildObject(userData){

for (var i = 0; i < userData.length; i++){
myArray = new Array() // at each iteration this will be empty and we get new group of "Group_individuals"
if(userData[i].unit_code=== userData[i].fk_unit_code){

                        myArray.push(userData[i].Group_individuals)
                        console.log(myArray)

            }
     }
}

“userData”中可用的数据如下:

[
    { Group_individuals  : 'John',
      unit_code   : 2,
      fk_unit_code: 2,
    }
    { Group_individuals  : 'Rocky',
      unit_code   : 2,
      fk_unit_code: 2,
    }
    { Group_individuals  : 'Alex',
      unit_code   : 3,
      fk_unit_code: 3,
    }
    { Group_individuals  : 'Prince',
      unit_code   : 3,
      fk_unit_code: 3,
    }
    { Group_individuals  : 'James',
      unit_code   : 2,
      fk_unit_code: 2,
    }

]

我希望 myArray 看起来像: 在第一次迭代中 myArray = [John, Rocky, James] 在第二次迭代中 myArray = [Alex, Prince]

【问题讨论】:

    标签: arrays node.js postgresql for-loop


    【解决方案1】:

        var userData = [{
        	Group_individuals: 'John',
        	unit_code: 2,
        	fk_unit_code: 2,
        },{
        	Group_individuals: 'Rocky',
        	unit_code: 2,
        	fk_unit_code: 2,
        },{
        	Group_individuals: 'Alex',
        	unit_code: 3,
        	fk_unit_code: 3,
        },{
        	Group_individuals: 'Prince',
        	unit_code: 3,
        	fk_unit_code: 3,
        },{
        	Group_individuals: 'James',
        	unit_code: 2,
        	fk_unit_code: 2,
        }]
        var result = {};
        
        for (var i in userData) {
        	if (userData[i].unit_code != userData[i].fk_unit_code)
        		continue;
        	var key = `${userData[i].unit_code}${userData[i].fk_unit_code}`;
        
        	result[key] = result[key] || [];
        
        	result[key].push(userData[i].Group_individuals);
        
        }
        
        console.log(result);

    【讨论】:

    • 向 OP 解释这个答案可能会很好,这样他们就可以学到一些东西(以及未来的读者)
    • @vcode 非常感谢您的回答,这帮助我实现了我的期望。谢谢!!!
    猜你喜欢
    • 2017-05-29
    • 2022-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    相关资源
    最近更新 更多