多维数组中第一个元素的增量

时间:2021-04-01 15:02:47

标签: javascript jquery arrays object ecmascript-6

我有一个类似于:[x, y] 的数组。而 y 将始终保持不变。我希望 x 每次迭代都增加 100。

这就是我所做的:

let arr = [
    {
        "name": "pies",
        "data": [
            [
                "us",
                149045
            ],
            [
                "es",
                41746
            ],
            [
                "uk",
                37640
            ],
            [
                "au",
                16594
            ]
        ],
    },
    {
        "name": "cakes",
        "data": [
            [
                "us",
                128845
            ],
            [
                "es",
                35752
            ],
            [
                "uk",
                32246
            ],
            [
                "au",
                14333
            ]
        ],
    }
];

let inc = 100;
arr.forEach(d=> {
    d['m_arr'] = [inc, 125];
    inc +100;
});

console.log(arr);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

如您所见,它并没有增加值。它始终只是插入 [100, 125]。在第一个名称为 pies 的对象中,我希望 m_arr: [100, 125] 和下一个名称为 cakes 的对象为 [200, 125]

我该怎么做?

2 个答案:

答案 0 :(得分:1)

问题在于,您从未设置存储原始值 100 (inc) 其新值的变量。这行 inc + 100 将取 inc add 100 的值然后忘记它,因为它没有存储。您应该做的是使用 += 更新现有值。

答案 1 :(得分:1)

我相信这是您在这里尝试实现的简化版本。与其设置 inc 变量,如果您打算重新使用该函数,您可能需要在稍后重置该变量,只需使用 forEach 方法(第二个参数)中包含的迭代器参数。通过将此值加 1,然后乘以 100,您应该始终获得所需的值。这是在行动:

let arr = [
    {
        name: "pies",
        data: [
            ["us", 149045],
            ["es", 41746],
            ["uk", 37640],
            ["au", 16594]
        ],
    }, {
        name: "cakes",
        data: [
            ["us", 128845],
            ["es", 35752],
            ["uk", 32246],
            ["au", 14333]
        ],
    }
];

arr.forEach((d,i) => d.m_arr = [(i+1)*100, 125]);

console.log(arr); // returns the below ↓↓↓

[
    {
        name: "pies",
        data: [
            ["us", 149045],
            ["es", 41746],
            ["uk", 37640],
            ["au", 16594]
        ],
        m_arr: [100, 125]
    }, {
        name: "cakes",
        data: [
            ["us", 128845],
            ["es", 35752],
            ["uk", 32246],
            ["au", 14333]
        ],
        m_arr: [200, 125]
    }
];
相关问题