在javascript中组合单词

在javascript中组合单词,javascript,Javascript,有人能告诉我如何在javascript中进行单词组合吗。 我是编程新手。是我干的 var words=["word1","word2","word3","word4"]; Ex: words: [ "word1", "word2", "word3", "word4" ] "word1 word2", "word1 word3", "word2 word3", "word1 word2 word3", "word2 word3 word4", "word1 wo

有人能告诉我如何在javascript中进行单词组合吗。 我是编程新手。是我干的

var words=["word1","word2","word3","word4"];
Ex:

words: [
    "word1",
    "word2",
    "word3",
    "word4"
]
"word1 word2",
"word1 word3",
"word2 word3",
"word1 word2 word3",
"word2 word3 word4",
"word1 word3 word4"
输出:

words: [
    "word1",
    "word2",
    "word3",
    "word4"
]
"word1 word2",
"word1 word3",
"word2 word3",
"word1 word2 word3",
"word2 word3 word4",
"word1 word3 word4"

这是一种方法:

var ret = ["word1","word2","word3","word4"].reduce(function(ret, el, i, arr) {
     var n = arr.slice(++i);
     ret = ret.concat(n.map(function(_el) {
       return el + ' ' + _el;
     }));
     return ret;
}, []);
更新:如果我正确理解了(更新的)问题,下面的代码片段应该可以做到这一点:

var ret = ["word1", "word2", "word3", "word4", "word5"].reduce(function (ret, el, i, arr) {
  var n = arr.slice(++i);
  [2, 3].forEach(function (c) {
    ret = ret.concat(n.map(function (_, i) {
      return [el].concat(n.slice(i)).slice(0, c).join(' ');
    }));
  });
  if ( i === arr.length - 1 ) ret.pop();
  return ret;
}, []);

这是一种方法:

var ret = ["word1","word2","word3","word4"].reduce(function(ret, el, i, arr) {
     var n = arr.slice(++i);
     ret = ret.concat(n.map(function(_el) {
       return el + ' ' + _el;
     }));
     return ret;
}, []);
更新:如果我正确理解了(更新的)问题,下面的代码片段应该可以做到这一点:

var ret = ["word1", "word2", "word3", "word4", "word5"].reduce(function (ret, el, i, arr) {
  var n = arr.slice(++i);
  [2, 3].forEach(function (c) {
    ret = ret.concat(n.map(function (_, i) {
      return [el].concat(n.slice(i)).slice(0, c).join(' ');
    }));
  });
  if ( i === arr.length - 1 ) ret.pop();
  return ret;
}, []);
JS

// array of words
var words = ["word1", "word2", "word3", "word4"];
// array to hold results
var result = [];
// number of times we need to iterate to check over all possible combinations
var setCount = Math.pow(2, words.length) - 1;
// loop over iterations
for (var i = 0; i < setCount; i++) {
  // array to hold this result
  var innerList = [];

  for (var j = 0; j < words.length; j++) {
    // Each position in the initial list maps to a bit here
    var position = 1 << j;
    // if the bits when bitwise AND are position then this is unique match
    if ((i & position) == position) {
      // insert into inner list
      innerList.push(words[j]);
    }
  }
  // insert into results if it isn't empty or a size of 1
  if(innerList.length !== 0 && innerList.length !== 1) {
    result.push(innerList);
  }
}

// purely for printing
for (var i = 0; i < result.length; i++) {
  console.log(result[i]);
}
console.log(result.length);
//单词数组
var words=[“word1”、“word2”、“word3”、“word4”];
//用于保存结果的数组
var结果=[];
//我们需要迭代检查所有可能组合的次数
var setCount=Math.pow(2,words.length)-1;
//循环迭代
对于(变量i=0;iJS

// array of words
var words = ["word1", "word2", "word3", "word4"];
// array to hold results
var result = [];
// number of times we need to iterate to check over all possible combinations
var setCount = Math.pow(2, words.length) - 1;
// loop over iterations
for (var i = 0; i < setCount; i++) {
  // array to hold this result
  var innerList = [];

  for (var j = 0; j < words.length; j++) {
    // Each position in the initial list maps to a bit here
    var position = 1 << j;
    // if the bits when bitwise AND are position then this is unique match
    if ((i & position) == position) {
      // insert into inner list
      innerList.push(words[j]);
    }
  }
  // insert into results if it isn't empty or a size of 1
  if(innerList.length !== 0 && innerList.length !== 1) {
    result.push(innerList);
  }
}

// purely for printing
for (var i = 0; i < result.length; i++) {
  console.log(result[i]);
}
console.log(result.length);
//单词数组
var words=[“word1”、“word2”、“word3”、“word4”];
//用于保存结果的数组
var结果=[];
//我们需要迭代检查所有可能组合的次数
var setCount=Math.pow(2,words.length)-1;
//循环迭代
对于(变量i=0;ivar position=1我从一个循环开始。将每个循环与其他循环连接起来。但最终出现了重复的循环,如“word1 word2”,“word2 word1”显示您所做的,然后我们可以看到如何最好地帮助更新问题您的输出似乎是随机的,您的意思是要打印数组中所有项目的组合吗?如果是这样,您缺少多个组合我不想要重复。例如“word1 word2”和“word2 word1”samei是从一个循环开始的。将每个循环与其他循环连接起来。但最终会出现重复的循环,如“word1 word2”,“word2 word1”显示您所做的,然后我们可以看到如何最好地帮助更新问题您的输出似乎是随机的,您的意思是要打印数组中所有项目的组合吗?如果是这样,您缺少多个组合我不想要重复。例如“word1 word2”和“word2 word1”相同用户只需要2-3个组合。脚本需要一点修改。@elchininet我没看到他说用户只需要2-3个组合。脚本需要一点修改。@elchininet我没看到他这么说