Angular2或NodeJs:基于另一个数组重新排列/排序JSON元素

时间:2017-02-10 06:46:21

标签: javascript json node.js angular

我见过类似的问题,但大多数答案并没有很好的表现。我想使用Angular2或NodeJS来实现这一目标,无论哪种性能更好。

我有一组用户水果首选项'编号

{15, 43, 55, 67, 98};

我有一个JSON对象,其中包含超市提供的水果

{"fruits":[
    {"Name":"Apple", "ID": 23},
    {"Name":"Mango", "ID": 15},
    {"Name":"Orange", "ID": 21},
    {"Name":"Melon", "ID": 7},
    {"Name":"Grapes", "ID": 67},
    {"Name":"Berries", "ID": 80},
]};

我需要有效地重新排列第二个列表以使列表顶部的第一个数组中存在任何内容,其余的元素我不关心它们的顺序。所以在上面的例子中,结果应该是

{"fruits":[
    {"Name":"Mango", "ID": 15},
    {"Name":"Grapes", "ID": 67},
    {"Name":"Apple", "ID": 23},
    {"Name":"Orange", "ID": 21},
    {"Name":"Melon", "ID": 7},
    {"Name":"Berries", "ID": 80},
]};

1 个答案:

答案 0 :(得分:0)

这是一个API请求

[GET] api/fruits?id=5,43,55,67,98

我会假设你的意思是那些Ids是一个数组。

let ids = [5, 43, 55, 67, 98];

我从这个立场就假设你从某个地方查询。

var data = {"fruits":[
    {"Name":"Apple", "ID": 23},
    {"Name":"Mango", "ID": 15},
    {"Name":"Orange", "ID": 21},
    {"Name":"Melon", "ID": 7},
    {"Name":"Grapes", "ID": 67},
    {"Name":"Berries", "ID": 80},
]};

<强>更新

var missing = [];
var result = data.fruits.filter(fruit => keys.indexOf(fruit.ID) > -1 
    ? true : missing.push(fruit) && false );
result.push(missing);

return { "fruits": result };

这就是你可以在Javascript中查询的方式。

我建议使用Mongo商店和camelCase作为你的房产名称。