![]() |
时尚的企鹅 · VS2010卸载时vs_setup.msi ...· 6 月前 · |
![]() |
深情的火车 · 直播流AI应用开发工程技巧(一) ...· 1 年前 · |
![]() |
才高八斗的哑铃 · Java语言实战开发 @网络聊天室 (二) ...· 1 年前 · |
![]() |
力能扛鼎的领结 · pg 与 oracle 比较 - ...· 1 年前 · |
我希望使用下划线来迭代每个项目,并在每个水果名称的末尾追加一个句点,并返回一个数组。但是可以有许多嵌套级别。
`const` `NESTED =` `[
{name: 'Apple',
items: [{
name: 'Orange',
items: [{name: 'Banana'}]
{name: 'Pear'}]`
我的期末考试应该是这样的:
`NESTED =` `[{ name: 'Apple.', items: [{name: 'Orange.', items: [{name: 'Banana.'}]}]}, { name: 'Pear.'}]`
里面可以有很多很多的东西。这就是我陷入困境的地方,我当前的下划线函数只能获得第一个级别,使用._map:
let items = _.map(NESTED, function(item){
return {
// append the period here, but doesn't go deeper
});
做这件事的好方法是什么?
发布于 2015-06-16 21:09:01
这对于您提供的示例数据应该有效。
var pre = document.getElementById('out'),
NESTED = [{
name: 'Apple',
items: [{
name: 'Orange',
items: [{
name: 'Banana'
name: 'Pear'
function recurse(arr) {
var res = arr.map(function (item) {
return Object.keys(item).reduce(function (acc, key) {
if (key === 'name') {
acc[key] = item[key] + '.';
} else if (key === 'items') {
acc[key] = recurse(item[key]);
return acc;
}, {});
return res;
pre.textContent = 'New\n\n';
pre.textContent += JSON.stringify(recurse(NESTED), null, 2) + '\n\n';
pre.textContent += 'Original\n\n';
pre.textContent += JSON.stringify(NESTED, null, 2);
<pre id="out"></pre>
应该很容易将纯JS转换为下划线。
更新:直接转换为下划线
var pre = document.getElementById('out'),
NESTED = [{
name: 'Apple',
items: [{
name: 'Orange',
items: [{
name: 'Banana'
name: 'Pear'
function recurse(arr) {
var res = _.map(arr, function (item) {
return _.reduce(_.keys(item), function (acc, key) {
if (key === 'name') {
acc[key] = item[key] + '.';
} else if (key === 'items') {
acc[key] = recurse(item[key]);
return acc;
}, {});
return res;
pre.textContent = 'New\n\n';
pre.textContent += JSON.stringify(recurse(NESTED), null, 2) + '\n\n';
pre.textContent += 'Original\n\n';
pre.textContent += JSON.stringify(NESTED, null, 2);
<script src="http://underscorejs.org/underscore-min.js"></script>
<pre id="out"></pre>
发布于 2015-06-16 20:25:10
只是一次快速的尝试
var findMyChildren = function(this, parent){
if(parent !== null){
this[name] = child[name] + '.';
if(child[items] !== null){
for(var i=0;i<child[items].length;i++){
var child = this[items][i];
findMyChildren(child, this);
};
发布于 2015-06-16 20:51:11
答案已经在这里了, looping through arrays of arrays
var printArray = function(arr) {
if ( typeof(arr) == "object") {
for (var i = 0; i < arr.length; i++) {
printArray(arr[i]);