2017-12-17 13 views
-3

私はこの配列から名前を取得しています。 2回返された重複した名前(例: "Kenny")があります。新しい配列に1回だけプッシュしたいだけです。私はちょっとプロセス中に失われています。これまで私が行ってきたことは次のとおりです。値が重複していない場合は、項目を新しい配列に挿入します。

var newArr = []; 



$.ajax({ 
    url: 'https://spreadsheets.google.com/feeds/list//od6/public/values?alt=json', 
    success: function(data){ 
     var entryPoint = data.feed.entry; 
     // data.feed.entry entry to arrays 
     for (i = 0; i < entryPoint.length; i++){ 
      var fName = entryPoint[i].gsx$firstname.$t; 
      var lName = entryPoint[i].gsx$lastname.$t; 
      var email = entryPoint[i].gsx$email.$t; 
      var total = entryPoint[i].gsx$totalordered.$t; 


      newArr.push(fName) 

     } 

    } 


}) 
+0

[Array.push()が存在しない場合は複製できますか?](https://stackoverflow.com/questions/1988349/array-push-if-does-not-exist) – arpl

答えて

1

使用して、これが見つからない場合:

var newArr = []; 
var found; 

$.ajax({ 
url: 'https://spreadsheets.google.com/feeds/list//od6/public/values?alt=json', 
success: function(data) 
{ 
    var entryPoint = data.feed.entry; 
    // data.feed.entry entry to arrays 

    for (i = 0; i < entryPoint.length; i++) 
    { 
     var fName = entryPoint[i].gsx$firstname.$t; 
     var lName = entryPoint[i].gsx$lastname.$t; 
     var email = entryPoint[i].gsx$email.$t; 
     var total = entryPoint[i].gsx$totalordered.$t; 

     found = false; 

     // Check the array for the name 
     for(var i=0; i < newArr.length; i++) 
     { 
      if(newArr[i] == fName) 
      { 
       found = true; 
       break; 
      } 
     } 

     // If name not found, add it 
     if(!found) newArr.push(fName) 
    } 
} 
}); 
+0

ありがとうございますヒント、私は 'true'のために編集しました。 – Ivan86

3

newArr.indexOf(値)は-1を返します

0

newArrが一意の値を格納する必要がある場合、それはSet、ではないでなければなりませんアレイ。あなたは、コンストラクタに配列を渡すことによって、Setに名前を入れることができます。

var newSet = new Set(entryPoint.map(entry => entry.gsx$firstname.$t)); 

すでにセットに追加されています任意の名前はスキップされます。あなたは、あなたがより快適にしている場合、セットに基づいて配列を作成するためにそれを使用し、IteratornewSet.values()を使用して保存された名前で仕事を得る、またはすることができます

var newArr = [...newSet.values()]; 
// or var newArr = Array.from(newSet.values()); if you can't use destructuring 

すべてのこと言われて、Set ISN」 Internet Explorerで利用可能です。しかし、特にpolyfill.ioを使ってpolyfillすることができます。

関連する問題