js 统计对象里的字符串出现的次数

在这里插入图片描述

数据源

let arrList = {
	name: "zhangsAnZ",
	age: 3900,
	show: true,
	address: "ADHFUFRUfjshafoshf166",
	children: [{
			id: 100,
			title: "66611111123fjslfsgAFFOFFpPPZ"
		},
		{
			id: 300,
			title: "111122222223fjslfQAAAAAXZCDEFFFpPPZZ"
		}
	]
}

方法一

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<meta name="viewport" content="width=device-width,initial-scale=1" />
		<title></title>
	</head>
	<body>
		<script>
			let arrList = {
				name: "zhangsAnZ",
				age: 3900,
				show: true,
				address: "ADHFUFRUfjshafoshf166",
				children: [{
						id: 100,
						title: "66611111123fjslfsgAFFOFFpPPZ--"
					},
					{
						id: 300,
						title: "111122222223fjslfQAAAAAXZCDEFFFpPPZZ"
					}
				]
			}
			// 入口函数
			function mainApp(item) {
				var strChar = ""

				function mainAppChild(arr) {
					for (let key in arr) {
						if (typeof arr[key] != 'object') {
							strChar += arr[key]
						} else {
							mainAppChild(arr[key])
						}
					}
				}
				mainAppChild(item)
				return stringFn(strChar)
			}
			// 处理最终字符串
			function stringFn(str) {
				let obj = {};
				str = str.toString().toLocaleLowerCase()
				for (i = 0; i < str.length; i++) {
					key = str[i];
					if (obj[key]) {
						obj[key]++;
					} else {
						obj[key] = 1;
					}
				}
				return objSort(obj)
			}

			// 对象排序
			function objSort(obj) {
				//得到按键值升序排列的键数组
				let keyArr = Object.keys(obj).sort((a, b) => {
					return obj[b] - obj[a]; //降序
				});
				let myMap = new Map();
				for (let i = 0; i < keyArr.length; i++) {
					myMap.set(keyArr[i], obj[keyArr[i]]);
				}
				return myMap
			}
			console.log(mainApp(arrList));
		</script>
	</body>
</html>


方法二

// 入口函数
			function mainApp(arr) {
				let tempStr = ""
				for (var key in arr) {
					let str = arr[key];
					if (typeof arr[key] != 'object') {
						tempStr += str.toString()
					} else { //处理数组
						tempStr += object(str)
					}
				}
				console.log(stringFn(tempStr));
			}
			//数组处理
			function object(arr) {
				let tempStr = ""
				arr.forEach(item => {
					for (let key in item) {
						tempStr += item[key].toString()
					}
				})
				return tempStr
			}

			// 处理最终字符串
			function stringFn(str) {
				let obj = {};
				str = str.toString().toLocaleLowerCase()
				for (i = 0; i < str.length; i++) {
					key = str[i];
					if (obj[key]) {
						obj[key]++;
					} else {
						obj[key] = 1;
					}
				}
				return objSort(obj)
			}

			// 对象排序
			function objSort(obj) {
				//得到按键值升序排列的键数组
				let keyArr = Object.keys(obj).sort((a, b) => {
					return obj[b] - obj[a]; //降序
				});
				let myMap = new Map();
				for (let i = 0; i < keyArr.length; i++) {
					myMap.set(keyArr[i], obj[keyArr[i]]);
				}
				return myMap
			}
			
			mainApp(arrList)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值