Cra*_*tch 12 javascript join underscore.js lodash
我有2个对象列表:
people =
[{id: 1, name: "Tom", carid: 1},
{id: 2, name: "Bob", carid: 1},
{id: 3, name: "Sir Benjamin Rogan-Josh IV", carid: 2}];
cars=
[{id: 1, name: "Ford Fiesta", color: "blue"},
{id: 2, name: "Ferrari", color: "red"},
{id: 3, name: "Rover 25", color: "Sunset Melting Yellow with hints of yellow"}];
Run Code Online (Sandbox Code Playgroud)
是否有一个函数(可能在Angular,JQuery,Underscore,LoDash或其他外部库中)在这些函数的一行中进行左连接?就像是:
peoplewithcars = leftjoin( people, cars, "carid", "id");
Run Code Online (Sandbox Code Playgroud)
我可以编写自己的,但如果LoDash有一个优化版本,我想使用它.
此实现使用 ES6 扩展运算符。同样,不是所要求的库函数。
const leftJoin = (objArr1, objArr2, key1, key2) => objArr1.map(
anObj1 => ({
...objArr2.find(
anObj2 => anObj1[key1] === anObj2[key2]
),
...anObj1
})
);
Run Code Online (Sandbox Code Playgroud)
您可以使用Alasql JavaScript SQL 库来连接两个或多个对象数组:
var res = alasql('SELECT people.name AS person_name, cars.name, cars.color \
FROM ? people LEFT JOIN ? cars ON people.carid = cars.id',[people, cars]);
Run Code Online (Sandbox Code Playgroud)
在 jsFiddle试试这个例子。
归档时间: |
|
查看次数: |
10984 次 |
最近记录: |