我有一个类似于:[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]
。
我该怎么做?
答案 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]
}
];