我需要解析一个对象并使用Underscore / Lo-Dash转换为一个数组
尝试使用usersocre,但它没有得到预期的结果.对不起我是下划线js的新手.非常感谢您的帮助.
- var arr = _.values(obj)
- var obj = {
- '2c13790be20a06a35da629c71e548afexing': [{
- connector: '',displayName: 'John',loginName: '',userImage: '2.jpg'
- }],'493353a4c5f0aa71508d4055483ff979linkedinpage': [{
- connector: '',displayName: 'Mak',userImage: '1.jpg'
- }]
- }
预期的输出数组
- array = [{
- connector: '2c13790be20a06a35da629c71e548afexing',userImage: '2.jpg'
- },{
- connector: '493353a4c5f0aa71508d4055483ff979linkedinpage',userImage: '1.jpg'
- }]
解决方法
将Object.keys与forEach一起使用,并在数组中添加对象.
>获取对象的所有键
>使用forEach迭代keys数组
>在结果数组中推送子数组的第一个元素.
码:
- var arr = [];
- Object.keys(obj).forEach(function(e) {
- // Get the key and assign it to `connector`
- obj[e][0].connector = e;
- arr.push(obj[e][0]);
- });
- var obj = {
- '2c13790be20a06a35da629c71e548afexing': [{
- connector: '',userImage: '2.jpg'
- }],'493353a4c5f0aa71508d4055483ff979linkedinpage': [{
- connector: '',userImage: '1.jpg'
- }]
- };
- var arr = [];
- Object.keys(obj).forEach(function(e) {
- obj[e][0].connector = e;
- arr.push(obj[e][0]);
- });
- console.log(arr);
- document.getElementById('output').innerHTML = JSON.stringify(arr,4);
- <pre id="output"></pre>
将相同的代码转换为使用Lodash / Underscore的forEach.
- var arr = [];
- _.forEach(obj,function(e,k) {
- e[0].connector = k;
- arr.push(e[0]);
- });
- var obj = {
- '2c13790be20a06a35da629c71e548afexing': [{
- connector: '',userImage: '1.jpg'
- }]
- };
- var arr = [];
- _.forEach(obj,k) {
- e[0].connector = k;
- arr.push(e[0]);
- });
- console.log(arr);
- document.getElementById('output').innerHTML = JSON.stringify(arr,4);
- <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.js"></script>
- <pre id="output"></pre>