js 根据已知指定的顺序对数组对象进行排序

有一个已知数据列表,需要按照数组对象中某个字段值的规定顺序进行排序,具体方法如下:

    // 已知数组数据列表
    let data = [
      { num: 2, city: '深圳', type: '美食' },
      { num: 1, city: '北京', type: '高校' },
      { num: 4, city: '上海', type: '风景' },
      { num: 3, city: '广州', type: '汽车' },
    ]
    console.log('原来数组是:', data);

    // 按照规定序号排序
    let sortArr = [1, 2, 3, 4]
    let resArr = []
    sortArr.forEach((item, index) => {
      let itemObj = {
        num: item,
        city: '',
        type: ''
      }
      let targetData = data.filter(o => item && item == o.num)
      itemObj.city = targetData.length > 0 ? targetData[0].city : ''
      itemObj.type = targetData.length > 0 ? targetData[0].type : ''
      resArr.push(itemObj)
    })
    console.log('按照【序号排序】后的结果是:', resArr);

    // 按照规定城市名称排序
    let sortArrCity = ["北京", "上海", "广州", "深圳"]
    let resArrCity = []
    sortArrCity.forEach((item, index) => {
      let itemObj = {
        num: '',
        city: item,
        type: ''
      }
      let targetData = data.filter(o => item && item == o.city)
      itemObj.num = targetData.length > 0 ? targetData[0].num : ''
      itemObj.type = targetData.length > 0 ? targetData[0].type : ''
      resArrCity.push(itemObj)
    })
    console.log('按照【城市排序】后的结果是:', resArrCity);

结果如图:
在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值