gpt4 book ai didi

javascript - 对象数组 - 与其他列数据相比增加一列

转载 作者:搜寻专家 更新时间:2023-10-30 23:39:17 25 4
gpt4 key购买 nike

我手头有一个非常复杂的计算,但我发现很难完成。这里是。我有一张 table 。

表1:(Name、ID、Location和Sum是一个表的列)

Name | table1_ID | Location | Sum
rick | 1 | Gorets |
alex | 3 | hebrew |

表2:(City, ID, Sex是一个表的列)

City | table2_ID | Sex
wew | 34 | M
rfgf | 3 | F
dgff | 1 | M
hgfhg| 1 | F

表3:(Notice、ID、Flag是一个表的列)

Notice | table3_ID | Flag
hiji | 1 | true
asas | 1 | false

表 1 所需的最终输出应如下所示。

根据表2和表3的值,表1应该是这样的

Name | table1_ID | Location | Sum
rick | 1 | Gorets | 4
alex | 3 | hebrew | 1

我将向您解释我想要实现的上述目标。如您所见,第一个表列 sum 为空。这些根据 table2 和 table3 中找到的条目获取更新。

基本上。在table2和table3的'ID'中搜索table1中的'ID'。例如。在表 2 和表 3 中搜索值为“1”的 ID。它发现 ID 在第二个和第三个表中出现了 4 次。所以它会将总和值设为 4。

同样,它将在其他 2 个表中搜索 3,发现它只出现过一次,因此它将更新 ID“3”的“sum”列中的 1。

我希望你已经得到了我想要达到的目标。如果我对 3 个表数据执行 console.log,结果如下:

表 1:- console.log(userinfo);

[Object][Object]
[0-1]
[0]: Object
Name: 'rick'
table1_ID: 1
Location:Gorets
Sum:
[1]: Object
Name: 'alex'
table1_ID: 3
Location:hebrew
Sum:

其他 2 个表的输出格式类似。有人可以让我知道如何使用上面提到的计算值更新 Sum: 吗?

最佳答案

您可以使用一个对象来获取表 3 中 ID 的所有计数,并将其作为表 2 计数的输入,并将其用作查找以分配表 1 中的总和。

function count(r, a) {
r[a.ID] = (r[a.ID] || 0) + 1;
return r;
}

var table1 = [{ Name: 'rick', ID: 1, Location: 'Gorets', Sum: undefined }, { Name: 'alex', ID: 3, Location: 'hebrew', Sum: undefined }, { Name: 'foo', ID: 42, Location: 'bar', Sum: undefined }],
table2 = [{ City: 'wew', ID: 34, Sex: 'M' }, { City: 'rfgf', ID: 3, Sex: 'F' }, { City: 'dgff', ID: 1, Sex: 'M' }, { City: 'hgfhg', ID: 1, Sex: 'F' }],
table3 = [{ Notice: 'hiji', ID: 1, Flag: true }, { Notice: 'asas', ID: 1, Flag: false }];

table1.forEach(function (a) {
a.Sum = this[a.ID] || '-';
}, table2.reduce(count, table3.reduce(count, Object.create(null))));

document.write('<pre>' + JSON.stringify(table1, 0, 4) + '</pre>');

编辑

what if instead of ID as the column name for all 3 tables, we have table1_ID, table2_ID and table3_ID as the column names. what changes will i have to make to the code pleasE ?

function count(key) {
return function (r, a) {
r[a[key]] = (r[a[key]] || 0) + 1;
return r;
};
}

var table1 = [{ Name: 'rick', table1_ID: 1, Location: 'Gorets', Sum: undefined }, { Name: 'alex', table1_ID: 3, Location: 'hebrew', Sum: undefined }, { Name: 'foo', table1_ID: 42, Location: 'bar', Sum: undefined }],
table2 = [{ City: 'wew', table2_ID: 34, Sex: 'M' }, { City: 'rfgf', table2_ID: 3, Sex: 'F' }, { City: 'dgff', table2_ID: 1, Sex: 'M' }, { City: 'hgfhg', table2_ID: 1, Sex: 'F' }],
table3 = [{ Notice: 'hiji', table3_ID: 1, Flag: true }, { Notice: 'asas', table3_ID: 1, Flag: false }];

table1.forEach(function (a) {
a.Sum = this[a.table1_ID] || '-';
}, table2.reduce(count('table2_ID'), table3.reduce(count('table3_ID'), Object.create(null))));

document.write('<pre>' + JSON.stringify(table1, 0, 4) + '</pre>');

关于javascript - 对象数组 - 与其他列数据相比增加一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37077396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com