所以我有数组 A:
var arrA = [{
name: 'twitter',
location: 0,
hidden: false,
href: "https://twitter.com/i/connect"
}, {
name: 'medium',
location: 1,
hidden: false,
href: "https://medium.com/me/activity"
}
];
和数组B:
var arrB = [{
name: 'twitter',
location: 1,
hidden: false
}, {
name: 'medium',
location: 0,
hidden: false
}
];
我怎样才能得到一个看起来像这样的数组:
var newArr = [{
name: 'twitter',
location: 1,
hidden: false,
href: "https://twitter.com/i/connect"
}, {
name: 'medium',
location: 0,
hidden: false,
href: "https://medium.com/me/activity"
}
];
所以,这里有两件事,1. location
值取自 arrB
,而不是 arrA
,2. newArr
的对象现在包含 href
键,取自 arrA
。
所以我需要第二个数组的值,但是新的键是从第一个数组维护的。
我可以使用 underscore.js 函数执行此操作吗(我现在正在使用 _.extend,但如果它是新的,它不会维护来自 arrA
的 key )?
最佳答案
您可以连接两个数组并使用 Alasql 选择适当的属性图书馆:
var res1 = alasql('SELECT arrA.name, arrB.location, arrA.href, arrB.hidden \
FROM ? arrA JOIN ? arrB USING name', [arrA,arrB]);
或 Underscore _.extend 版本:
alasql.fn.extend = _.extend.bind(_);
var res2 = alasql('SELECT COLUMN extend(arrA._, arrB._)
FROM ? arrA JOIN ? arrB USING name', [arrA,arrB]);
试试这些例子 at jsFiddle .
关于javascript - 在 JS 中扩展和合并两个数组(包含对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16828864/