Javascript - 计算相同的值并划分数组中相同值的结果
Posted
技术标签:
【中文标题】Javascript - 计算相同的值并划分数组中相同值的结果【英文标题】:Javascript - Count same values and divide result of same values in array 【发布时间】:2022-01-09 01:22:54 【问题描述】:下面代码中如何使用除法运算
这里我使用数组值 1 为红色、2 为白色、3 为棕色的条件
因为这是一只袜子,所以如果值甚至像 2,那么它被计为一对 (1)。
const stok = [1,1,2,2,3,3,3,3];
function sockMerchant()
const colors = ["","red","white","brown"];
const count = stok => stok.reduce((prev, curr) => (prev[curr] = ++prev[curr] || 1, prev), );
const strings = Object.entries(count(stok)).reduce((acc,[key,val]) => (acc[colors[key]] = val , acc),[]);
return strings;
console.log(sockMerchant(stok))
如果有相同的值并且计算的值是偶数,则除以2
我的输出
[red: 2, white: 2, brown: 4]
我的预期输出
[red: 1, white: 1, brown: 2]
**提前谢谢你
【问题讨论】:
你真的想要一个有属性的数组吗?你试过得到想要的结果吗? “如果有相同的值” - 你的意思是,stok
中的任何数字都存在多个? "计算出来的值是偶数然后除以2" - 如果不是呢?
这里我使用条件如果数组值1是红色,2是白色,3是棕色,因为这是袜子,所以如果值甚至像2那么它被计为一对(1).
【参考方案1】:
您无法获取带有属性的数组。
所以,我正在创建一个具有问题要求的对象。
const stok = [1, 1, 2, 2, 3, 3, 3, 3];
function sockMerchant()
const colors = ["red", "white", "brown"];
const count = stok.reduce((prev, curr) =>
prev[curr - 1]++; //add to the index in prev
return prev;
, [...Array(colors.length)].fill(0));
//take an array initially with the length of colors and value 0
const obj = ;
colors.forEach((a, i) =>
obj[a] = Math.floor(count[i] / 2); //you can use ceil if u want to count single left over as 1
)
return obj;
console.log(sockMerchant(stok))
【讨论】:
感谢您的回答非常有帮助,但是如果我声明 const colors = stock.map(e=> e == 1 ? e = "blue" : e == 如何使用对象 [obj] 3 ? e = "绿色" : e == 5 ? e = "黑色" : e == 8 ? e = "红色" : "未定义") developer.mozilla.org/en-US/docs/Web/javascript/Reference/… 您可以在此链接中阅读有关对象映射的信息。在这里你可能会得到更多的信息以上是关于Javascript - 计算相同的值并划分数组中相同值的结果的主要内容,如果未能解决你的问题,请参考以下文章
如何从复选框中获取值并使用 javascript 计算单击的项目