加入Javascript

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有一个优化版本,我想使用它.

Ash*_*son 7

此实现使用 ES6 扩展运算符。同样,不是所要求的库函数。

const leftJoin = (objArr1, objArr2, key1, key2) => objArr1.map(
    anObj1 => ({
        ...objArr2.find(
            anObj2 => anObj1[key1] === anObj2[key2]
        ),
        ...anObj1
    })
);
Run Code Online (Sandbox Code Playgroud)


Geo*_*off 5

Linq.js http://linqjs.codeplex.com/将与许多其他事情一起做连接


age*_*hun 5

您可以使用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试试这个例子。