繁体   English   中英

Javascript - 排序数组基于另一个 javascript object 属性

[英]Javascript -sort array based on another javascript object properties

我有一个 javascript 阵列和一个 object。 需要帮助根据另一个数组中的订单号对 javascript object 键进行排序

在子组数组中,我有名称、订单号。 需要根据该订单号对产品键进行排序

const subgroup = [
        {
            "code": "6748",
            "name": "test123",
            "orderNumber": "0"
        },
        {
            "code": "1234",
            "name": "customdata",
            "orderNumber": "1"
        }
    ]

 const offerings = {
        "customdata" : [
    {
        "code": "Audi",
        "color": "black"
      }
    ],
        "test123" : [
    {
        "brand": "Audi",
        "color": "black"
      }
    ]
 }

我相信这应该对你有用。 我在代码中添加了一些注释,希望可以很好地解释正在发生的事情。

 var subgroup = [{ "code": "6748", "name": "test123", "orderNumber": "0" }, { "code": "1234", "name": "customdata", "orderNumber": "1" }]; var offerings = { "customdata": [{ "code": "Audi", "color": "black" }], "test123": [{ "brand": "Audi", "color": "black" }] } function sortObjectFromArray(refArray, sortObject, orderKey = 'order', linkKey = 'key') { // Get copy of refArray let reference = refArray.slice(); // Sort sortObject [ into an array at this point ] let sorted = []; for (let key in sortObject) { // Searches the refArray for the linkKey, and returns the intended index let index = reference.find((item) => item[linkKey] === key)[orderKey]; // Places the sortObject's value in the correct index of the 'sorted' Array sorted[parseInt(index)] = [key, sortObject[key]]; }; // Return an object, created from previous 'sorted' Array return sorted.reduce((obj, [key, value]) => { obj[key] = value; return obj; }, {}); }; offerings = sortObjectFromArray(subgroup, offerings, 'orderNumber', 'name'); console.log(offerings);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM