2017-12-10 21 views
-1

私はこの配列を持っていますか?配列から別のプロパティの値を取得するには?

上記の配列から、既存のすべての名前を区別する必要があります。

var result = getNamesDistinct(arr); 

resultは結果が含まれている必要があります:

["Tom","Jon","Jack"]; 

私の質問には明確なARRからすべての既存の名前を取得する方法ですか?

答えて

1

あなたはSetオブジェクト

const arr = [ 
 
    { id: "1", Name: "Tom" }, 
 
    { id: "2", Name: "Jon" }, 
 
    { id: "3", Name: "Tom" }, 
 
    { id: "4", Name: "Jack" } 
 
]; 
 

 
const uniqueNames = [...new Set(arr.map(item => item.Name))]; 
 

 
console.log(uniqueNames);

それとも、配列を反復処理し、一意の名前だけを取得するために条件を追加することができます経由でそれを行うことができます。

const arr = [ 
 
    { id: "1", Name: "Tom" }, 
 
    { id: "2", Name: "Jon" }, 
 
    { id: "3", Name: "Tom" }, 
 
    { id: "4", Name: "Jack" } 
 
]; 
 

 
const uniqueNames = arr.reduce(function(arr, item) { 
 

 
    if(arr.indexOf(item.Name) === -1) { 
 
     arr.push(item.Name); 
 
    } 
 

 
    return arr; 
 

 
}, []); 
 

 
console.log(uniqueNames);

+0

矢印のシンタックスエラーがあります。 – Michael

+0

投稿していただきありがとうございます。 – Michael

+0

@Michaelコードを更新しました –

3

Setが利用可能な場合、あなたは単に

new Set(arr.map(obj => obj.Name)) 

を行うことができます(あなたが配列を必要とする場合Array.fromにセットを渡す)

1

あなたはこの

を試すことができます
var array = [{ 
     id: "1", 
     Name: "Tom" 
    }, { 
     id: "2", 
     Name: "Jon" 
    }, { 
     id: "3", 
     Name: "Tom" 
    }, { 
     id: "4", 
     Name: "Jack" 
    }] 

    function uniqueNames(array) { 
     var newArray = []; 
     array.forEach((value, key) => { 
      newArray.push(value.Name) 
     }); 
     return newArray 
    } 
    var myNewArray = uniqueNames(array) 
関連する問題