算法题记录

1、将对象数组中名称相同的对象选项组成新的对象数组。
eg:

原始数组:originalArr = [
	{ name: '张三', age: 13 },
	{ name: '李四', age: 14},
	{ name: '张三', age: 15 },
	{ name: '王五', age: 16 },
	{ name: '王五', age: 17},
]
结果数组:
[
	{ name: '张三', age: 13 },
	{ name: '张三', age: 15 },
	{ name: '王五', age: 16 },
	{ name: '王五', age: 17},
]

实现方式:

  let originalArr = [
    {name: '张三', age: 13},
    {name: '李四', age: 14},
    {name: '张三', age: 15},
    {name: '王五', age: 16},
    {name: '王五', age: 17},
  ]
  let tempObj = {}
  let resultArr = []
  originalArr.forEach(item => {
    if (Object.keys(tempObj).indexOf(item.name) === -1) {
      tempObj[item.name] = []
    }
    tempObj[item.name].push(item)
  })
  Object.keys(tempObj).forEach(item => {
    if (tempObj[item].length > 1) {
      resultArr = [...resultArr, ...tempObj[item]]
    }
  })
  console.log(resultArr)

打印结果:
在这里插入图片描述
2、打印1-10000对称的数,如11、33、121

    for(let i =1; i < 10000; i++) {
      let tempArr = i.toString().split('')
      let flag = true
      tempArr.forEach( ( item, idx ) => {
        let tempIdx = -(idx+1)
        if ( i <= 10 || item !== tempArr.at(tempIdx) && flag) {
          console.log('进来了')
          flag = false
        }
      })
      if ( flag ) {
        console.log(i)
      }
    }

3、用递归算法实现,数组长度为5且元素的随机数在2-32间不重复的值

	function tempFunc(tempArr = [], randomMin = 2, randomMax = 32, arrLength = 5) {
	  const resultArr = tempArr
	  const randomNum = randomMin + Math.floor(Math.random() * (randomMax - randomMin))
	  if (!resultArr.includes(randomNum)) {
	    resultArr.push(randomNum)
	  }
	  if (resultArr.length === arrLength) {
	    console.log('resultArr', resultArr)
	    return
	  }
	  tempFunc(resultArr)
	}
	
	tempFunc()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值