gpt4 book ai didi

javascript - 使用 javascript 创建堆叠数组

转载 作者:行者123 更新时间:2023-12-02 17:18:13 24 4
gpt4 key购买 nike

我有一个原始的二维数组,代表每年 100% 的版本预算,如下所示:

budget = [['2001-01-01', 100], ['2001-01-02', 110], ... , ['2001-12-31', 140]]

现在我需要创建项目预算的子数组。例如:

project1 = [['2001-01-01', 10], ['2001-01-02', 11]]

意思是,它持续 2 天并使用可用预算的 10%。

我通过以下函数创建项目数组:

project1 = [[]];
project1 = new_project(budget, 0, 1, 0.1);

function new_project(origin, start, end, factor) {
var result = [[]];
result = origin.slice(parseInt(start), parseInt(end)).map(function (item) {
return [item[0], parseInt(item[1]) * factor]
});
return result;
}

问题

现在如何根据我创建的项目的值来减少我的预算数组?我需要通过调用 new_project 动态修改预算以获得:

budget = [['2001-01-01', 90], ['2001-01-02', 99],..., ['2001-12-31', 140]]

jsfiddle 设置

http://jsfiddle.net/gcollect/7DAsL/

最佳答案

您可以使用内置数组forEach() 方法来循环预算的子集(即project1)并更改原始预算的值。我创建了一个名为 decreaseBudget() 的函数,它将为您完成此操作:

function decreaseBudget(original, subset) {
// Loop over the subset's items.
subset.forEach(function(item, index){
// Get the original amount out of the original item.
// As we are looping over subset it will always have less items then the original
// so no need to check if the index is valid.
var originalItemAmount = original[index][1];
// Decrease the amount and set it back in it's original place
original[index][1] = (originalItemAmount - item[1]);
});
};

使用 budgetproject1 数组作为参数来调用它,以更改 budget 数组的值。看看更新后的 fiddle : http://jsfiddle.net/7DAsL/4/

如果您希望 decreaseBudget() 不会更改原始数组,而是返回一个副本,您可以使用数组 .slice() 方法制作原始数组的浅拷贝,进行更改副本并返回。

关于javascript - 使用 javascript 创建堆叠数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24229834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com