2017-04-13 6 views
-1

名前のリスト(first + last)があります。私は完全な名前が新しいリストと名前の初期リストとの間で共通でないように、すべてのフルネームとラストネームとの不一致をしたい。オブジェクトの配列における不一致のプロパティ

Mike,Pence 
Tom,ho 
Dave, hike 
.......so on ... 

有効な出力は次のようになります。

Mike,hike 
Tom,pence 
Dave,ho 
.......so on ... 

私のデータが点で最大100S上

 var name = [ { 
     firstN: 'Mike', 
     lastN: 'Pence', 
     fullName: 'Mike Pence' 
    }, 
    { 
     firstN: 'Tom', 
     lastN: 'Ho', 
     fullName: 'Tom Ho' 
    }, 
    { 
     firstN: 'Dave', 
     lastN: 'hike', 
     fullName: 'Dave Hike 
    } 

................とそうです ]

期待される出力:

New List = [ { 
     firstN: 'Mike', 
     lastN: 'Hike', 
     fullName: 'Mike Hike' 
    }, 
    { 
     firstN: 'Tom', 
     lastN: 'Pence', 
     fullName: 'Tom Pence' 
    }, 
    { 
     firstN: 'Dave', 
     lastN: 'ho', 
     fullName: 'Dave Ho 
    } 
+5

あなたの質問は、パズルそのものです! :) –

+0

だから、すべての名と姓が不一致である必要があります。正式な名前は正しくありませんか? –

+0

英語でリストを修正するためのルールを書き留めます(あなたの質問からはっきりしません)。次に、これらのルールをJavaScriptで実装します。 –

答えて

0

あなたはそうあなたがする必要があるすべては、前の人の最初の名前と対に「スライド」まで一人一人の姓である、あなたの最初のリストは、任意の繰り返し最初または最後の名前を持っていないことをコメントで明らかに:

var input = [{"firstN":"Andrew","lastN":"Anderson","fullName":"Andrew Anderson"},{"firstN":"Belinda","lastN":"Brown","fullName":"Belinda Brown"},{"firstN":"Clare","lastN":"Charleston","fullName":"Clare Charleston"},{"firstN":"David","lastN":"Downer","fullName":"David Downer"},{"firstN":"Edwin","lastN":"Edwards","fullName":"Edwin Edwards"},{"firstN":"Francine","lastN":"Fellows","fullName":"Francine Fellows"},{"firstN":"Gary","lastN":"Green","fullName":"Gary Green"},{"firstN":"Harriot","lastN":"Harcourt","fullName":"Harriot Harcourt"},{"firstN":"Irwin","lastN":"Inglesson","fullName":"Irwin Inglesson"},{"firstN":"Jennifer","lastN":"Jones","fullName":"Jennifer Jones"}] 
 

 
var output = input.map(function(p, i, a) { 
 
    var next = (i + 1) % a.length 
 
    return { 
 
    firstN: p.firstN, 
 
    lastN: a[next].lastN, 
 
    fullName: p.firstN + ' ' + a[next].lastN 
 
    } 
 
}) 
 

 
console.log(output)

0

あなたはこのような何かを行うことができます。同じインデックスで同じ値を生成することがあるので、配列をシャッフルするだけでロジックを変更する必要があります。

var nameList =[{firstN:'Tom',lastN:'Ho',fullName:'Tom Ho'},{firstN:'Mike',lastN:'Pence',fullName:'Mike Pence'},{firstN:'Dave',lastN:'Hike',fullName:'Dave Hike'}] 
 

 
var newNameList = []; 
 

 
var length = nameList.length; 
 
for (var a=[],i=0;i<length;++i) a[i]=i; 
 

 
function shuffle(array) { 
 
    var tmp, current, top = array.length; 
 
    if(top) while(--top) { 
 
    current = Math.floor(Math.random() * (top + 1)); 
 
    tmp = array[current]; 
 
    array[current] = array[top]; 
 
    array[top] = tmp; 
 
    } 
 
    return array; 
 
} 
 
a = shuffle(a); 
 

 
for(var i=0;i<length;i++){ 
 
    newNameList[i] = {}; 
 
    newNameList[i].firstN = nameList[i].firstN; 
 
    newNameList[i].lastN = nameList[a[i]].lastN; 
 
    newNameList[i].fullName = newNameList[i].firstN + " "+  newNameList[i].lastN; 
 
} 
 

 
console.log(newNameList)

関連する問題