我需要解析一个对象并使用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>