当前位置: 首页 > article >正文

面试专题:如何对对象的部分属性按序访问

编程题:
如下所示,对象有N个属性,需要对其中的key1 - key5属性按序优先显示,其他属性则按原序显示

 // 输入
  const obj = {
  ...
    key10: 'key10',
    key4: 'key4',
    key5: 'key5',
    key2: 'key2',
    key1: 'key1',
    key3: 'key3',
    ...
  }

 // 输出
  const obj = {
   key1: 'key1',
   key2: 'key2',
   key3: 'key3',
   key4: 'key4',
   key5: 'key5',
   key10: 'key10',
   ...
}

实现1: 直接赋值

function sortedObj0(){
	const orderKey = ['key1', 'key2', 'key3', 'key4', 'key5'];
	const sortedDetail = {};
	orderKey.forEach(key => {
		if (obj[key]) {
			sortedDetail[key] = obj[key];
		}
	});

	Object.keys(obj).forEach(key => {
		if (!sortedDetail[key]) {
			sortedDetail[key] = obj[key];
		}
	});

	console.log(sortedDetail)
	return sortedDetail
}

实现2:使用解构语法

function sortedObj1(){
	const {key1, key2, key3, key4, key5, ...rest} = obj;
	const result = {
		key1,
		key2,
		key3,
		key4,
		key5,
		...rest
	}
	console.log(result)
	return result;
}

实现3: 使用数据排序

function sortedObj2() {
	const orderKey = ['key1', 'key2', 'key3', 'key4', 'key5'];

	const orderObjKey = Object.keys(obj).sort((a,b) => {
		let indexA = orderKey.indexOf(a);
		let indexB = orderKey.indexOf(b);

		if (indexA === -1) indexA = Number.MAX_SAFE_INTEGER;
		if (indexB === -1) indexB = Number.MAX_SAFE_INTEGER;

		return indexA - indexB
	})

	const resultObj = {};
	orderObjKey.forEach(key => {
		resultObj[key] = obj[key]
	})

	console.log(resultObj)
	return resultObj;
}

http://www.kler.cn/a/282397.html

相关文章:

  • leetcode 扫描线专题 06-leetcode.253 meeting room ii 力扣.253 会议室 II
  • 《应用数学学报》
  • 【redis】—— 环境搭建教程
  • 树状数组+概率论,ABC380G - Another Shuffle Window
  • 电子电气架构 --- 传统刷写流程怎么用在SOC上就不适用呢?
  • .netcore + postgis 保存地图围栏数据
  • 深入浅出神经网络-学习小结
  • 使用mime/multipart上传文件报错:multipart: NextPart: EOF
  • javascript网页设计案例
  • 【Java设计模式】收集参数模式:掌握高效参数处理
  • Nacos配置中心动态刷新原理
  • 【Hot100】LeetCode—236. 二叉树的最近公共祖先
  • 【Go高性能】测试(单元测试、基准测试)
  • 携程:从MySQL迁移OceanBase的数据库发布系统实践
  • VMware安装Win10系统后,启动系统提示不支持的处理器,怎么解决
  • LVS部署——DR集群
  • 【区块链 + 司法存证】区块链存证仲裁平台 | FISCO BCOS应用案例
  • 力扣8.29
  • 获取项目中的后缀josn文档,转成JSON格式
  • R语言中theme的调整技巧汇总-持续更新
  • Challenge——spfa
  • USB5834数据采集卡30路模拟量采集卡DAQ卡——阿尔泰科技
  • 本地生活本地推软件有哪些?使用过程中需要关注哪些要点?
  • 三分钟总结开源流程表单的优势特点
  • C语言—字符函数和字符串函数
  • 应急响应--日志分析