javascript - 我们可以在多维数组中使用递归来推送新值吗
问题描述
container
如果水果容器<我们想要的目标,如何在每个数组中推送新值,
例子:
- we should push new fruits in those 2d arrays:
- List item
- the maximun "apple" in container must has 3 fruits,
more than it, we should push to new array/index in next 2d array container
- the maximun "mango" in container must has 2 fruits,
more than it, we should push to new array/index in next 2d array container
- the maximun "stawberry" in container must has 4 next fruits,
more than it, we should push to new array/index in next 2d array container
const stawberry = x => {
return x.filter(el => el === "stawberry").length;
}
const apple = x => {
return x.filter(el => el === "apple").length;
}
const mango = x => {
return x.filter(el => el === "mango").length;
}
const fruits = kindOfFruits => {
if(kindOfFruits.length === 0){
return [];
} else if(stawberry(kindOfFruits[0]) === 0 ){
kindOfFruits[0].push("NEW STAWBERRY");
}
return kindOfFruits.concat((fruits(kindOfFruits.slice(1))));
}
const container = [
["apple", "apple", "banana", "mango", "stawberry", "banana", "banana"],
["banana", "mango", "stawberry", "stawberry"],
["apple", "mango", "mango"]
];
console.log(fruits(container));
我想要这样的结果:
[
["apple", "apple", "banana", "mango", "stawberry", "banana", "banana", "apple", "mango", "stawberry ", "stawberry", "stawberry"],
["banana", "mango", "stawberry", "stawberry", "apple", "apple" , "stawberry"],
["apple", "mango", "mango"]
];
注意:如果我们推的时候水果没有分类,这并不重要,只要容器中的水果和我们想推的一样:D,
数据容器已经制作好了,我们只需要在每个容器中放入水果 2d 数组,就像我上面说的规则一样
我希望我的问题是有道理的,如果没有,对不起
解决方案
我认为你的问题有很多差距,没有定义任何目标或容器中有多少种“水果”等。
正如我从您的问题中了解到的那样,您希望在目标上完全填充二维数组。所以我skecth一些代码:
var appleTarget = 5;
var mangoTarget = 7;
var strawberryTarget = 12;
var kindOfFruit = ["apple", "mango", "strawberry"];
function fruitCount(subFruitContainer, fruit)
{
return subFruitContainer.filter(el => el === fruit).length;
}
function insertFruit(dimension , fruit)
{
dimension.push(fruit);
}
function stableContainer(fruitContainer)
{
var selectedTarget;
kindOfFruit.forEach(function(fruitKind) {
fruitContainer.forEach(function(dimension){
if(fruitKind == "apple") selectedTarget = appleTarget;
else if(fruitKind == "mango") selectedTarget = mangoTarget;
else if(fruitKind == "strawberry") selectedTarget = strawberryTarget;
else selectedTarget = 0;
var fruitKindCount = fruitCount(dimension, fruitKind);
if(fruitKindCount < selectedTarget)
{
for(var i = selectedTarget-fruitKindCount; i > 0; i--)
{
insertFruit(dimension, fruitKind);
}
}
});
});
console.log("stabled container");
console.log(fruitContainer);
}
var container = [
["apple", "apple", "banana", "mango", "stawberry", "banana", "banana"],
["banana", "mango", "stawberry", "stawberry"],
["apple", "mango", "mango"]
];
stableContainer(container);
推荐阅读
- c++ - 如何替换已分配的数组?
- xamarin - Xamarin Forms WebView 无法将相机用于 HTML 文件输入类型
- java - 从android中的视频uri生成缩略图并将其转换为base64
- r - 创建一个可在 R 中发布的表
- elasticsearch - Elasticsearch 父子 has_child 不返回任何结果
- python - 尽管 dash.PreventUpdate 阻止了其他函数,但仍强制执行初始回调
- java - Android Studio 在创建条形图时退出
- c - While循环导致函数在c中返回0
- python - 向量化函数的麻烦
- html - 在html中添加mapbox的位置选择器