javascript - 使用 linq.js 从多个对象创建 JSON 对象数组

标签 javascript linq.js

我有一个像这样的 JSON 数组:

var jsonArray = [
    { Date: "2010-02-25", Size:"Large", Type:"a", Value: "100"},
    { Date: "2010-02-25", Size:"Medium", Type:"a", Value: "160"},
    { Date: "2010-02-25", Size:"Small", Type:"a", Value: "200"},
    { Date: "2010-02-25", Size:"Large", Type:"b", Value: "400"},
    { Date: "2010-02-25", Size:"Medium", Type:"b", Value: "120"},
    { Date: "2010-02-25", Size:"Small", Type:"b", Value: "170"}
]

我一直在使用 linq.js,我试图操作上面的 JSON,以便 6 个对象变成 2 个,所以我留下一个如下所示的数组:

var desiredArray = [

    { Date: "2010-02-25", Large:"100", Medium: "160", Small: "200", Type:"a" }
    { Date: "2010-02-25", Large:"400", Medium: "120", Small: "170", Type:"b" }

]

但是这是我第一次使用linq。我花了很长时间试图弄清楚,但我真的不知道如何开始。

有人能给我指出正确的方向吗?

任何帮助将不胜感激

最佳答案

这是实现此目的的一种方法:

var jsonArray = [
    { Date: "2010-02-25", Size:"Large", Type:"a", Value: "100"},
    { Date: "2010-02-25", Size:"Medium", Type:"a", Value: "160"},
    { Date: "2010-02-25", Size:"Small", Type:"a", Value: "200"},
    { Date: "2010-02-25", Size:"Large", Type:"b", Value: "400"},
    { Date: "2010-02-25", Size:"Medium", Type:"b", Value: "120"},
    { Date: "2010-02-25", Size:"Small", Type:"b", Value: "170"}
];

function makeGroupKey(item) {
    return JSON.stringify({
        Date: item.Date,
        Type: item.Type
    });
}

function mergeItems(items) {
    return items.Aggregate(JSON.parse(items.Key()), function (prev, next) {
        prev[next.Size] = next.Value;
        return prev;
    });
}

var result = Enumerable.From(jsonArray)
    .GroupBy(makeGroupKey)
    .Select(mergeItems)
    .ToArray();

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/linq.js/2.2.0.2/linq.min.js"></script>

关于javascript - 使用 linq.js 从多个对象创建 JSON 对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28726394/

相关文章:

javascript - 根据其他填充一个输入字段

javascript - 解构时处理嵌套对象的缺失属性

javascript - Vue.js:EventBus.$收到的值没有传播

javascript - linq.js:GroupBy(),然后 ToJSON()

javascript - 如何使用 linq.js 编写可枚举 'like' 查询

javascript - 如何循环遍历对象数组和分隔嵌套数组

javascript - jQueryUI - 一页上的多个 slider

javascript - jQuery on() 事件不会为 sweetalert2 文本框触发

javascript - linq,js GroupBy 坐标(lat, lng)

javascript - 如何使用 linqjs 链接 "SelectMany"调用(或展平 JSON)