【问题标题】:how to filter and create an response in javascript如何在 javascript 中过滤和创建响应
【发布时间】:2021-10-31 19:09:31
【问题描述】:

我正在尝试映射和过滤键和值

  AvailblePointsToBuy = 100;
  lifePriority = { "cloth":1,"bike":2,"cycle":3 }
  availbility = {"cycle":40,"car":80,"cloth":10,"bike":50 }

我需要根据“lifePriority”优先级创建一个响应,并且总点数不应低于 AvailblePointsToBuy。

output be like :    { "cloth":10,"bike":50 ,"cycle":40,}    based on the lifePriority need to sort with total points not to excude 100 points.  

【问题讨论】:

  • 使用Object.entries(lifePriority) 获取键和值的二维数组。现在根据每个数组的第二个元素(即优先级)对其进行排序。最后, .map() 将结果保存到一个新数组中,用可用性对象中的键值替换优先级。一步一步做。如果您遇到困难,请通过编辑将您的尝试发布在问题中,最好是minimal reproducible example

标签: javascript node.js sorting


【解决方案1】:

逻辑

  • 循环通过lifePriority
  • 从优先级值 1 开始。(或列表中的最小值)
  • lifePriority 中查找具有所需优先级的项目及其匹配值从availbility 中。
  • 将密钥添加到输出中,其值是产品可用性或总可用性的最小值。
  • 将总可用性降低为产品可用性的最小值或为零。

AvailblePointsToBuy = 100;
const lifePriority = { "cloth": 1, "bike": 2, "cycle": 3 };
const availbility = { "cycle": 40, "car": 80, "cloth": 10, "bike": 50 };  
const output = {};
let priority = 1;
Object.keys(lifePriority).forEach((key) => {
  if(lifePriority[key] === priority) {
    output[key] = AvailblePointsToBuy > availbility[key] ? availbility[key] : AvailblePointsToBuy;
    AvailblePointsToBuy = (AvailblePointsToBuy - availbility[key]) > 0 ? (AvailblePointsToBuy - availbility[key]) :  0; 
  }
  priority++;
})
console.log(output);

【讨论】:

    猜你喜欢
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 2018-11-25
    相关资源
    最近更新 更多