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 计算单击的项目

如何通过在两行之间划分特定列中的值并保持其他列不变来在熊猫数据框中创建新行?

在一行中查找所有相同的值并保持另一行的最高绝对值

我们如何在电子表格公式中更改列值并保持行不变?

在 Python 中查找最近的值并返回数组的索引

比较数组中的值并删除 Ruby/Rails 中不同的项目