【问题标题】:Javascript - Count same values and divide result of same values in arrayJavascript - 计算相同的值并划分数组中相同值的结果
【发布时间】: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).

标签: javascript console.log


【解决方案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/… 您可以在此链接中阅读有关对象映射的信息。在这里你可能会得到更多的信息
猜你喜欢
  • 2017-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多