过滤nodejs中的JSON数据
我正在研究MEAN框架。 我有JSON如下所示:
[{ "restaurant": { "_id": "55095363649e380e12cc1868", "name": "Skygarage" }, "sumSP": 241 }, { "restaurant": { "_id": "54e6afe5c1184450416e3118", "name": "Farmaaish" }, "sumSP": 3920 },{ "restaurant": { "_id": "55095363649e380e12cc1868", "name": "Skygarage" }, "sumSP": 2333 },{ "restaurant": { "_id": "55095363649e380e12cc1868", "name": "Skygarage" }, "sumSP": 2445 }]
我想根据餐厅过滤sumSP。 因此,对于上面的例子,我需要下面的过滤数组:
[{ 'Skygarage':[241,2333,2445] }, { 'Farmaaish':[3920] }]
我已经看到使用_的解决scheme,但这应该需要过滤的属性值,但在我的情况下,我不知道有多less餐馆将在我的JSON。
这里有一个方法是用lodash做到的:
var data = [{ "restaurant": { "_id": "55095363649e380e12cc1868", "name": "Skygarage" }, "sumSP": 241 }, { "restaurant": { "_id": "54e6afe5c1184450416e3118", "name": "Farmaaish" }, "sumSP": 3920 },{ "restaurant": { "_id": "55095363649e380e12cc1868", "name": "Skygarage" }, "sumSP": 2333 },{ "restaurant": { "_id": "55095363649e380e12cc1868", "name": "Skygarage" }, "sumSP": 2445 }]; var reduced = _.reduce(data, function (result, value, key) { console.log(result, value, key); if (!result[value.restaurant.name]) result[value.restaurant.name] = []; result[value.restaurant.name].push(value.sumSP); return result; }, {}); document.getElementById("result").innerHTML = JSON.stringify(reduced);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.0/lodash.min.js"></script> <pre id="result"></pre>