返回参数数字的千分位分隔符字符串+按指定长度切割数组

刷题的时候刷到了返回参数数字的千分位分隔符字符串的题目

题目:返回参数数字的千分位分隔符字符串
输入:12345
输出:12,345

输入:1234567
输出:1,234,567

(很抓马,我的脑袋空空)

目前思路如下:

1.将数字转成数组
2.按长度3以末尾为始分割成新的数组
3.以“,”连接新的数组
4.将新数组转成字符串输出

 进行到第二步时,本想凭自己的大脑写出来,结果emm

好的 参考来了

最后不足len长度的也以一个数组存储,原文👇

js拆分数组(将一个数组以len长度分割,最后不足len长度的也以一个数组存储)_云风xe的博客-CSDN博客

/* 按指定长度切割数组 */
function split_array(arr,len){
	for(let i =0;i<arr.length;i+=len){
		ret.push(arr.slice(i,i+len))
	}
}

跟着博主敲了一下,接下来引申一下从数组末尾开始以len长度分割,头不足len的也以一个数组存储;

怎么说,觉得应该会很容易,但,没直接改出来,报错了,写了一个费劲的👇

实现:从尾按长度切割数组
思路:1.确定能切割点索引
     2.使用slice按段取出
代码:
function _splitArr(arr,len){
 // 保存切割点索引
 let arrcutIndex = []
 for(let i = arr.length;i>0;i-=len){
  arrcutIndex.push(i)
 }
 arrcutIndex.reverse()
 let ret = []
 arrcutIndex.reduce((pre,cur,index)=>{
  ret.push(arr.slice(pre,cur))
  return cur
 },0)
 return ret
}
_splitArr([1,2,3,4,5,6,7],3)

 还有问题,就不做严谨讨论了,想要做出题目那样,需要将小数组使用jion方法,接连jion();

完整代码如下:

function _cut(incoming,len){
    let arr
	if(incoming>=0){
	    arr = incoming.toString().split('')
		return split_array_tail(arr,len)
	}else{
		arr = Math.abs(incoming).toString().split('')
		return '-'+split_array_tail(arr,len)
	}
	// let arr = incoming.toString().split('') 没考虑到0和负数
	let ret = []
	function split_array_tail(arr,len){
	    let ret = []
	    let temparr = []
	    for(i = arr.length;i>0;i-=len){
		    temparr.push(i)								
	    }
	    temparr.reverse()
	    temparr.reduce((pre,cur,index)=>{
		    console.log(pre,cur,index)
		    ret.push(arr.slice(pre,cur).join(''))
		    return cur
	    },0)
	    return ret.join(',')
	}
}
_cut(1234567,3)

 以上 是我的思路,我要去提交了,如果不对,我就去借鉴通过人的脑子了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值