【发布时间】:2020-07-08 00:07:37
【问题描述】:
我希望能够根据对象中另一个键值对的值对对象数组中的值求和。
基于cat 的值,我想对val1, val2, val3 的值求和。
我有一个对象数组:
let json = [
{cat: 'abc', device: 'iphone', site: 'google', val1:10, val2:20, val3:30},
{cat: 'abc', device: 'iphone', site: 'bing', val1:23, val2:12, val3:14},
{cat: 'abc', device: 'iphone', site: 'jeeves', val1:67, val2:78, val3:12},
{cat: 'pqr', device: 'ipad', site: 'google', val1:10, val2:20, val3:30},
{cat: 'pqr', device: 'ipad', site: 'bing', val1:23, val2:12, val3:14},
{cat: 'pqr', device: 'ipad', site: 'jeeves', val1:67, val2:78, val3:12},
{cat: 'xyz', device: 'mac', site: 'google', val1:10, val2:20, val3:30},
{cat: 'xyz', device: 'mac', site: 'bing', val1:23, val2:12, val3:14},
{cat: 'xyz', device: 'mac', site: 'jeeves', val1:67, val2:78, val3:12}
]
首先我决定删除其他 2 个字段,
我有一个包含要删除的键的数组:let arr= ['device', 'site'];
let json = [
{cat: 'abc', device: 'iphone', site: 'google', val1:10, val2:20, val3:30},
{cat: 'abc', device: 'iphone', site: 'bing', val1:23, val2:12, val3:14},
{cat: 'abc', device: 'iphone', site: 'jeeves', val1:67, val2:78, val3:12},
{cat: 'pqr', device: 'ipad', site: 'google', val1:10, val2:20, val3:30},
{cat: 'pqr', device: 'ipad', site: 'bing', val1:23, val2:12, val3:14},
{cat: 'pqr', device: 'ipad', site: 'jeeves', val1:67, val2:78, val3:12},
{cat: 'xyz', device: 'mac', site: 'google', val1:10, val2:20, val3:30},
{cat: 'xyz', device: 'mac', site: 'bing', val1:23, val2:12, val3:14},
{cat: 'xyz', device: 'mac', site: 'jeeves', val1:67, val2:78, val3:12}
]
let arr= ['device', 'site'];
json.forEach(d=>{
arr.forEach(a=>{
delete d[a];
});
});
console.log(json);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
有没有比 2 个forEaches 更简洁、更具扩展性的方法?我还希望能够对val1, val2, val3 的值求和。
这是我的期望值:
[
{cat:'abc', val1:100, val2:110, val3:56},
{cat:'pqr', val1:100, val2:110, val3:56},
{cat:'xyz', val1:100, val2:110, val3:56}
]
【问题讨论】:
标签: javascript jquery arrays object ecmascript-6