让我们说一下阵列[' Alex',' Sam'' Robert']
我希望将它们结合起来:
取第一个数组[0]并追加数组[2],这将是AlexRobert
数组[0]的第一个字母是A,附加数组[2]是罗伯特,将是ARobert
取数组[0]为Alex,并附加数组[2]的第一个字母,即R将是AlexR
将第一个数组[0]追加到数组[1]的第一个字母以及将成为AlexSRobert的数组[2]。
基本上,整个想法是当有人输入名字,中间名和&姓氏我应该能够组合并猜测电子邮件ID。例如,Juan F. Nathaniel的数组形式就像[' Juan',' F',' Nathaniel']
我想要像jaunn,jnathaniel,jaunfnathaniel这样的名字,中间名和姓氏的组合
我是初学者,这是我写的:
var nameCombination = function(name){
var counting = name.split(" ");
for (var i=0; i<counting.length; i++){
console.log(counting[i] + counting[i+1]);
console.log(counting[i].split("",1) + counting[i+1]);
}
}
nameCombination('Alex Sam Robert');
答案 0 :(得分:1)
我假设您需要一个功能来执行此操作?这是一个处理数组每个索引的抓取部分的函数。我会让你知道你需要什么类型的数据......
var test = function() {
var array = ['Alex', 'Sam', 'Robert'];
var conditions = [{
index: 0,
length: array[0].length
},
{
index: 1,
length: 1
},
{
index: 2,
length: array[2].length
}]
alert(combine(array, conditions));
}
var combine = function(array, conditions) {
var output = "";
for(index in conditions) {
var condition = conditions[index];
var index = condition['index'];
var length = condition['length'];
output += array[index].substring(0, length);
}
return output;
}
test();
答案 1 :(得分:1)
您可以使用迭代和递归方法来获取可变长度的零件及其长度。
function combine(array) {
function c(part, index) {
array[index].forEach(function (a) {
var p = part.concat(a);
if (p.length === array.length) {
r.push(p.join(''));
return;
}
c(p, index + 1);
});
}
var r = [];
c([], 0);
return r;
}
var input= ['Johann', 'Sebastian', 'Bach'],
array = input.map(function (a) { return ['', a[0], a]; });
result = combine(array);
console.log(result);
答案 2 :(得分:1)
可以使用递归方法解决此问题。
var combinations = function(names, i, n){
if(i == n){
return [];
}
last_names = combinations(names, i + 1, n);
name_combinations = last_names.map(function(last_name){
return [
last_name,
names[i] + last_name,
names[i] + last_name[0],
names[i][0] + last_name,
names[i][0] + last_name[0]
]
});
name_combinations = [].concat.apply([], name_combinations);
name_combinations.push(names[i]);
return name_combinations;
};
var nameCombinations = function(name){
var name_array = name.split(' ');
return Array.from(new Set(combinations(name_array, 0, name_array.length)));
};
nameCombinations('first last');
上面的函数可以为给定的名称生成所有需要的组合。
例如:nameCombinations(&#39; first last&#39;)将返回[&#34; last&#34;,&#34; firstlast&#34;,&#34; firstl&#34;,&# 34; flast&#34;,&#34; fl&#34;,&#34; first&#34;]。
答案 3 :(得分:0)
好的,不写出每一个组合,我会先做几个给你的想法:
假设
array[0] is the person's first name
array[1] is the person's middle name
array[2] is the person's last name
姓+名字:
var output = array[0] + array [2];
姓+中间名:
var output1 = array[0] + array[1];
然后你可以使用innerHTML显示输出:
使用Javascript:
document.getElementById("output").innerHTML = output + '<br>' + output1;
HTML:
<div id="output"></div>
请记住,您需要继续为其余组合执行此操作。
现在,对于需要获取变量第一个字母的组合,您需要使用charAt
堆栈溢出答案中的charAt
。
你会做与以前一样的事情,除非你需要使用var output2 = array[0] + array[2].charAt(0);
并做同样的事情:
姓+ FirstLetterOfLastName:
Oe.targetJSLoaded
您可以使用与以前相同的方法输出它。
如果你仍然困惑,请留下评论,我会尽力回答你的问题。