在JavaScript对象中组合来自不同属性的数组项

在JavaScript对象中组合来自不同属性的数组项,javascript,arrays,loops,object,Javascript,Arrays,Loops,Object,我正在尝试创建一个函数,该函数将迭代数组对象,并返回一个数组,该数组将一个数组中的每个元素连接到其他数组中的每个元素: 反对意见如下: kitchen = { food: [".bacon",".bananas"], drinks: [".soda",".beer"], apps: ['.fritters','.wings'] } 所需的返回数组: [ ".bacon.soda",".bacon.beer", ".bananas.soda",".bananas.be

我正在尝试创建一个函数,该函数将迭代数组对象,并返回一个数组,该数组将一个数组中的每个元素连接到其他数组中的每个元素:

反对意见如下:

kitchen = {
    food: [".bacon",".bananas"],
    drinks: [".soda",".beer"],
    apps: ['.fritters','.wings']
}
所需的返回数组:

[
 ".bacon.soda",".bacon.beer",
 ".bananas.soda",".bananas.beer",
 ".bacon.fritters",".bacon.wings",
 ".bananas.fritters",".bananas.wings", 
 ".soda.fritters",".soda.wings",
 ".beer.fritters",".beer.wings"
]
我在思考如何实现这一点时遇到了困难。我的一个想法是创建另一个对象并创建一个散列,其中每个数组项都成为一个属性,然后循环,这样我就有了类似的东西:

newObj = {
    ".bacon": [".soda",".beer",".fritters",".wings"]
    ".bananas": [".soda",".beer"...etc]
    etc...
}
然后循环遍历每个属性,将每个数组元素上的属性连接到一个新数组中?不知道这是不是太过分了

简单的JS很好,但是如果你也有一个coffeescript解决方案,那就太好了

谢谢

试试这个:

var result = [];
var keys = Object.keys(kitchen);

for (var i = 0; i < keys.length; i++) {

    kitchen[keys[i]].forEach(function(ingred1) {
        for (var j = i+1; j < keys.length; j++) {

            kitchen[keys[j]].forEach(function(ingred2) {
                result.push(ingred1 + ingred2);
            });
        }
    });
}

console.log(result);
var结果=[];
var keys=Object.keys(厨房);
对于(变量i=0;i
这里有一个利用CoffeeScript语法的解决方案(因为您要求CoffeeScript回答,然后删除了该请求?)

以下是简单的JS版本:

var-kitchen={
食物:[“培根”、“香蕉”],
饮料:[“苏打水”、“啤酒”],
应用程序:['.friters','.wings']
}
var allGroups=Object.keys(厨房).map(函数(键){
返回厨房[钥匙];
});
var allValues=[]
allGroups.forEach(函数(组,i){
var otherValues=Array.prototype.concat.apply([],allGroups.slice(i+1));
group.forEach(函数(v1){
otherValues.forEach(函数(v2){
所有值推送(v1+v2);
});
});
});

console.log(allValues)
有没有原因导致
油炸食品
翅膀
香蕉。翅膀
前面没有点?对不起,没有,它们应该有点-刚刚更正了这个问题
kitchen = 
    food: [".bacon",".bananas"]
    drinks: [".soda",".beer"]
    apps: ['.fritters','.wings']

allGroups = Object.keys(kitchen).map (key) -> kitchen[key]

allValues = []
allGroups.forEach (group, i) ->
    otherValues = Array.prototype.concat.apply [], allGroups.slice(i + 1)
    group.forEach (v1) -> otherValues.forEach (v2) -> allValues.push(v1 + v2)

console.log(allValues)