首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在嵌套对象上迭代并使用Lodash连接字符串

在嵌套对象上迭代并使用Lodash连接字符串
EN

Stack Overflow用户
提问于 2014-10-28 11:22:01
回答 2查看 4.1K关注 0票数 0

我正在使用Lodash来使操作对象更容易。我有一个有三个嵌套对象的对象。我想迭代这些,将它们各自的子代以所有可能的组合连接在一起,而每个列表只使用一个。

我的目标是这样的:

代码语言:javascript
复制
{
  "list_1": {
    "1": ".cat-3",
    "2": ".cat-5",
    "3": ".cat-7"
  },
  "list_2": {
    "1": ".eyes-blue",
    "3": ".eyes-brown"
  },
  "list_3": {
    "1": ".jazz",
    "2": ".commercial",
    "3": ".hip-hop"
  }
}

我想得到的输出是:

代码语言:javascript
复制
.cat-3.eyes-blue.jazz
.cat-3.eyes-blue.commercial
.cat-3.eyes-blue.hip-hop

命令并不重要。关键是在字符串中只使用来自每个list_对象的一个值。因此,例如,这样做是可以的:

代码语言:javascript
复制
.eyes-blue.jazz.cat-3
.eyes-blue.cat-3.commercial
.hip-hop.eyes-blue.cat-3

还有更多的例子:

代码语言:javascript
复制
.cat-3.eyes-brown.jazz
.cat-5.eyes-brown.hip-hop
.cat-7.eyes-blue.hip-hop
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-28 19:40:09

将属性对象的值存储为数组的数组:

代码语言:javascript
复制
var arrayOfArrays = [];

_.each(obj, function(item, key) {
  var itemVals = [];
  _.each(item, function(item2, key2) {
    itemVals.push(item2);
  });
  arrayOfArrays.push(itemVals);
});

实现suffle()函数,如下所述:https://stackoverflow.com/a/2450976/2193416

实现一个函数以获得一个随机数组元素:

代码语言:javascript
复制
function randomElement(array) {
  return array[Math.floor(Math.random() * array.length)];
}

实现一个函数,从数组中选择随机元素作为级联字符串:

代码语言:javascript
复制
function randomCombination(arrayOfArrays) {
  var output = ""; 
  _.each(arrayOfArrays, function(innerArray) {
    output += randomElement(innerArray);
  })
  return output
}

现在,您可以通过执行以下操作来获得所需的输出:

代码语言:javascript
复制
randomCombination(shuffle(arrayOfArrays));

或者,如果您想保持arrayOfArrays原封不动:

代码语言:javascript
复制
randomCombination(shuffle(arrayOfArrays.slice(0)));
票数 2
EN

Stack Overflow用户

发布于 2016-04-29 05:46:46

相反,您可以使用first的zip函数,它创建一个分组元素数组,其中第一个元素包含给定数组的第一个元素,第二个元素包含给定数组的第二个元素,依此类推。

代码语言:javascript
复制
_.zip(['fred', 'barney'], [30, 40], [true, false]);
// → [['fred', 30, true], ['barney', 40, false]]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26607055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档