javascript - 从对象中的其他数组创建数组

标签 javascript arrays

我有一个包含 3 个数组的对象,我需要从中创建一个新数组。

这是我目前拥有的

function getItems(items)
{
    var returnArray = [];

    for(var i = 0; i < items.length; i++)
    {
        var item = items[i];   

        returnArray.push({ 
            id: item.product_sku,
            quantity: Math.round(item.product_quantity),
            price: item.product_price 
        });
    }

    return returnArray;
}

my_data = { product_price: "82.990000000, 26.750000000, 19.250000000", product_quantity: "1.000000000, 2.000000000, 1.000000000", product_sku: "1207, 1212, 1309" }


var viewBasket = JSON.stringify(getItems(my_data));

console.log("viewBasket = " + viewBasket);

这是我期待/希望看到的:

viewBasket  =  [ 
     { id: "1207", price: "82.990000000", quantity: "1.0" },
     { id: "1212", price: "26.750000000", quantity: "2.0" }, 
     { id: "1309", price: "19.250000000", quantity: "1.0" }
 ];

但它返回“viewBasket = []”;

最佳答案

您可以获取包含所需源键和目标键的数组,并迭代键并映射值。

var data = { checkout_pagename_url: "/checkout", order_total: "148.240000000", product_id: "126256, 126339, 131822", product_list_price: "82.990000000, 26.750000000, 19.250000000", product_discount: "0, 0, 0", product_name: "NorthShore AirSupreme Tab-Style Briefs, Medium, Case/60 (4/15s), NorthShore AirSupreme Tab-Style Briefs, Large, Pack/15, NorthShore FlexSupreme Pull-On Underwear, Large, Pack/14", product_quantity: "1.000000000, 2.000000000, 1.000000000", product_sku: "1207, 1212, 1309", product_price: "82.990000000, 26.750000000, 19.250000000", order_coupon_code: "" },
    keys = [['product_sku', 'id'], ['product_price', 'price'], ['product_quantity', 'quantity']],
    viewBasket = keys.reduce((r, [source, target]) => data[source]
        .split(', ')
        .map((v, i) => Object.assign(r[i] || {}, { [target]: v })) , []);

console.log(viewBasket);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 从对象中的其他数组创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57153815/

相关文章:

javascript - 将页脚贴在底部 - 没有 jQuery

java - 如何创建通用原始数组?

javascript - 比较对象内的某些键、值对 - 无直接匹配 (JavaScript)

c++ - 用于以快速且内存高效的方式处理大型数据数组的良好 C++ 数组类?

javascript - 使用 jQuery 访问关联数组

javascript windows.open() 方法失败

javascript - 无法将下一个js部署到azure

javascript - Node-Red 中函数的输出在 html 中显示为 [object OBJECT]。模板

javascript - vue js中从一个组件转到另一个组件时如何保留组件的信息

JavaScript 数组reduce 计算对象的最小值、最大值和平均值