满口金牙 2021-10-22 18:28 采纳率: 91.5%
浏览 57
已结题

javascript 数组过滤问题求解!

数组过滤求解,在不确定name,和date的情况下, 找到 name 相同,date相同的对象, 把其 commodity 的内容拼结,返回一个对象

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    var arr =[
    {name:'张三',commodity:'电视',date:'2020-10-1'},
    {name:'张三',commodity:'洗衣机',date:'2020-10-1'},
    {name:'张三',commodity:'手机',date:'2020-10-1'},
    {name:'李四',commodity:'手机',date:'2020-10-1'},
    {name:'张三',commodity:'电脑',date:'2020-10-5'},
    {name:'王五',commodity:'电脑',date:'2020-10-5'},
    {name:'李四',commodity:'手机',date:'2020-10-8'},
    {name:'王五',commodity:'音响',date:'2020-10-8'},
    {name:'王五',commodity:'手机',date:'2020-10-8'},
    ]
//在不确定name,和date的情况下,   找到 name 相同,date相同的对象, 把其 commodity 的内容拼结,返回一个对象
  //返回结果示例:
  arr=[
  {name:'张三',commodity:'电视,洗衣机,手机',date:'2020-10-1',number:3},
  {name:'李四',commodity:'手机',date:'2020-10-1',number:1},
  {name:'张三',commodity:'电脑',date:'2020-10-5',number:1},
  {name:'王五',commodity:'电脑',date:'2020-10-5',number:1},
  {name:'李四',commodity:'手机',date:'2020-10-8',number:1},
  {name:'王五',commodity:'音响,手机',date:'2020-10-8',number:2}
  ]
  console.log(arr)
  </script>
</body>
</html>
  • 写回答

1条回答 默认 最新

  • been_ss 2021-10-22 18:41
    关注

    哈喽,代码如下,有用请点采纳

    let arr = [
        {name:'张三',commodity:'电视',date:'2020-10-1'},
        {name:'张三',commodity:'洗衣机',date:'2020-10-1'},
        {name:'张三',commodity:'手机',date:'2020-10-1'},
        {name:'李四',commodity:'手机',date:'2020-10-1'},
        {name:'张三',commodity:'电脑',date:'2020-10-5'},
        {name:'王五',commodity:'电脑',date:'2020-10-5'},
        {name:'李四',commodity:'手机',date:'2020-10-8'},
        {name:'王五',commodity:'音响',date:'2020-10-8'},
        {name:'王五',commodity:'手机',date:'2020-10-8'}
    ]
    let res = []
    for(let x=0;x<arr.length;x++){
      let obj = JSON.parse(JSON.stringify(arr[x]))
      obj.number = 1
      if(arr[x].hasSame){
        continue;
      }
      for(let y=x+1;y<arr.length;y++){
        if(arr[x].name === arr[y].name && arr[x].date === arr[y].date){
          obj.number++;
          obj.commodity += `,${arr[y].commodity}`
          arr[y].hasSame = true
        }
      }
      res.push(obj)
    }
    console.log(res);
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月30日
  • 已采纳回答 10月22日
  • 修改了问题 10月22日
  • 修改了问题 10月22日
  • 展开全部

悬赏问题

  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?