从数组中的键向对象数组对象添加键和值



我有一个对象数组:

let json = [
{cat: 'one', device: 'iphone',   site: 'google', val1:10, val2:20, val3:30},
{cat: 'two', device: 'iphone',  site: 'bing', val1:23, val2:12, val3:14},
{cat: 'three', device: 'iphone',  site: 'jeeves', val1:67, val2:78, val3:12},
{cat: 'four',  device: 'ipad',  site: 'google', val1:10, val2:20, val3:30},
{cat: 'five',  device: 'ipad',  site: 'bing', val1:23, val2:12, val3:14},
{cat: 'six',  device: 'ipad',  site: 'jeeves', val1:67, val2:78, val3:12},
{cat: 'seven',  device: 'mac',   site: 'google', val1:10, val2:20, val3:30},
{cat: 'eight',  device: 'mac',   site: 'bing', val1:23, val2:12, val3:14},
{cat: 'nine',  device: 'mac',   site: 'jeeves', val1:67, val2:78, val3:15}  
]

然后我有一个数组:arr = ['device', 'object']

我有一个对象:

obj= {
a: 'one',
}

我想将数组中的任何内容(在本例中为['device', 'object'](添加到obj.

在上面的例子中,我希望obj看起来像这些对象数组:

[
{
a: 'one',
device: 'iphone'
object: 'google'
},
{
a: 'two',
device: 'iphone'
object: 'bing'
},
{
a: 'three',
device: 'iphone'
object: 'jeeves'
},
.........
]

键数组(arr(可能不同,因此不确定如何编写可重用函数。

如果我理解得对,你可以这样做。我假设您的jsonobj已排序,并且具有相同的列表,否则您还需要通过cat进行搜索,以在json中找到正确的行

const json = [
{cat: 'one', device: 'iphone',   site: 'google', val1:10, val2:20, val3:30},
{cat: 'two', device: 'iphone',  site: 'bing', val1:23, val2:12, val3:14},
{cat: 'three', device: 'iphone',  site: 'jeeves', val1:67, val2:78, val3:12},
]
const objs = [
{
a: 'one',
},
{
a: 'two',
},
{
a: 'three',
},
]
const arr = ['device', 'site']
const result = objs.map((obj, i) => {
arr.forEach(key => {
obj[key] = json[i][key]
})

return obj
})
console.log(result)

最新更新