简体   繁体   English

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

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

I have one javascript array and one object.我有一个 javascript 阵列和一个 object。 Need help to sort javascript object keys based on the order number in another array需要帮助根据另一个数组中的订单号对 javascript object 键进行排序

In subgroup array, I have name, order number.在子组数组中,我有名称、订单号。 Need to sort Offerings keys based on that order number需要根据该订单号对产品键进行排序

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"
      }
    ]
 }

I believe this should work for you.我相信这应该对你有用。 I've added some comments in the code that should hopefully do an okay job of explaining what is happening.我在代码中添加了一些注释,希望可以很好地解释正在发生的事情。

 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