Javascript 如何在数组中组合相同的字符串?
我正在做我的第一个项目,作为一个食品代理,从所选择的食谱成分中拿出一份购物清单。 我成功地编写了Javascript 如何在数组中组合相同的字符串?,javascript,arrays,string,Javascript,Arrays,String,我正在做我的第一个项目,作为一个食品代理,从所选择的食谱成分中拿出一份购物清单。 我成功地编写了循环,它将所有成分组合在一个数组中,从而引出我的问题 我想在数组中组合相同的成分,即:[1kg胡萝卜,1kg菠菜,1kg胡萝卜],我想将重复的(1kg胡萝卜,1kg胡萝卜)组合成(2kg胡萝卜) 有办法做到这一点吗 对不起,如果我的要求是草率的,第一次问问题 我可以计算它,这样它就可以抵消类似的结果,因为[1kg胡萝卜,1kg胡萝卜]的结果将是[1kg胡萝卜] 不幸的是,我目前正在工作,没有访问权限-
循环
,它将所有成分组合在一个数组中
,从而引出我的问题
我想在数组中组合相同的成分,即:[1kg胡萝卜,1kg菠菜,1kg胡萝卜]
,我想将重复的(1kg胡萝卜,1kg胡萝卜)
组合成(2kg胡萝卜)
有办法做到这一点吗
对不起,如果我的要求是草率的,第一次问问题
我可以计算它,这样它就可以抵消类似的结果,因为[1kg胡萝卜,1kg胡萝卜]
的结果将是[1kg胡萝卜]
不幸的是,我目前正在工作,没有访问权限-将在需要时进行更新。这可以通过两个步骤完成
var arr = ["1kg Carrots", "1kg Spinach", "1kg Carrots"]
第1步:计算总千克数
var arrCount = arr.reduce((ac, val)=> {
var [kg, key] = val.split(' ')
kg = parseFloat(kg)
ac[key] = ac[key]? ac[key]+kg : kg;
return ac
}, {}) // { Carrots: 2, Spinach: 1 }
步骤2:将其还原为数组
var out = Object.entries(arrCount).map(([key, kg])=> `${kg}kg ${key}`)
// [2kg Carrots, 1kg Carrots]
可以分两步完成
var arr = ["1kg Carrots", "1kg Spinach", "1kg Carrots"]
第1步:计算总千克数
var arrCount = arr.reduce((ac, val)=> {
var [kg, key] = val.split(' ')
kg = parseFloat(kg)
ac[key] = ac[key]? ac[key]+kg : kg;
return ac
}, {}) // { Carrots: 2, Spinach: 1 }
步骤2:将其还原为数组
var out = Object.entries(arrCount).map(([key, kg])=> `${kg}kg ${key}`)
// [2kg Carrots, 1kg Carrots]
我很可能会从数组中创建一个对象
const arr = ['1kg Carrots', '1kg Spinach', '1kg Carrots'];
let obj = {};
arr.forEach(element => {
let [kg, item] = element.split(' ');
kgNum = parseInt(kg);
if(Object.keys(obj).includes(item)){
return obj[item] += kgNum;
} else {
obj[item] = kgNum;
}
})
obj
// #=> { Carrots: 2, Spinach: 1 }
obj
是否已经有项的键,如果没有,我添加它
kgNum
这是一个很好的起点,您可以通过更多的工作了解如何添加回
kg
:)我很可能会从数组创建一个对象
const arr = ['1kg Carrots', '1kg Spinach', '1kg Carrots'];
let obj = {};
arr.forEach(element => {
let [kg, item] = element.split(' ');
kgNum = parseInt(kg);
if(Object.keys(obj).includes(item)){
return obj[item] += kgNum;
} else {
obj[item] = kgNum;
}
})
obj
// #=> { Carrots: 2, Spinach: 1 }
obj
是否已经有项的键,如果没有,我添加它
kgNum
这是一个很好的起点,您可以通过更多的工作了解如何添加回
kg
:)欢迎使用StackOverflow!为了帮助您,我们需要查看您的代码。欢迎使用堆栈溢出!请拿着(你得到了一个徽章!),四处看看,仔细阅读,特别是我还推荐Jon Skeet's和。答案将引导您走向正确的方向。欢迎来到StackOverflow!为了帮助您,我们需要查看您的代码。欢迎使用堆栈溢出!请拿着(你得到了一个徽章!),四处看看,仔细阅读,特别是我还推荐Jon Skeet's和。答案会让你走上正确的方向。谢谢,我一到家就会试试这个,并会让你知道结果。看起来这肯定会解决我的问题,不过(我不一定需要kg部件,我可以假设:)谢谢,我一到家就会试试这个,并会告诉你结果。看起来这肯定会解决我的问题(我不一定需要kg部件,我可以假设:)