AngularJS 2中如何将指定JSON对象转换为目标值数组?
在Angular 2+中转换对象为目标数组的实现方法
嘿,这个需求其实挺简单的~ 先纠正个小细节:通常我们说AngularJS特指1.x版本,2及以后的版本直接叫Angular,不过不管怎么叫,实现方法都是通用的,给你两种常用方案:
方案一:用Object.values()(最简洁)
这是ES2017引入的API,直接返回对象所有属性值组成的数组,完美匹配你的需求:
// 你的原始对象 const myObj = { 'test': {'key1': 'value', 'key2': 'value'}, 'test2': {'key3': 'value'} }; // 一行代码得到目标数组 const targetArray = Object.values(myObj);
执行后targetArray就是你想要的:[{'key1': 'value', 'key2': 'value'}, {'key3': 'value'}]。
现在大部分现代浏览器和Angular项目的配置都支持这个API,如果你的项目需要兼容旧环境,只需要在polyfills.ts里添加对应的polyfill即可。
方案二:手动遍历(更灵活)
如果你需要对属性值做额外处理(比如过滤某些属性、转换格式),可以手动遍历对象的键来构建数组,有两种写法:
写法1:for...of循环
const myObj = { 'test': {'key1': 'value', 'key2': 'value'}, 'test2': {'key3': 'value'} }; const targetArray: any[] = []; for (const key of Object.keys(myObj)) { // 这里可以加额外逻辑,比如判断key是否符合条件再添加 targetArray.push(myObj[key]); }
写法2:数组map方法
const myObj = { 'test': {'key1': 'value', 'key2': 'value'}, 'test2': {'key3': 'value'} }; const targetArray = Object.keys(myObj).map(key => { // 同样可以在这里添加自定义处理逻辑 return myObj[key]; });
这两种方式兼容性更好,也能应对更复杂的场景。
内容的提问来源于stack exchange,提问作者Salah Atwa
相关产品推荐
相关产品推荐

