2017-12-30 26 views
0

私の配列には同じアドレスのIDが含まれていますが、phoneTypeとphonenumberは異なります。 配列を反復処理するためにいくつかの助けが必要です。私は、adressidが同じ場合にphoneTypeとphonenumberを取得したいと思います。配列内のオブジェクトの値を比較すると、私は立ち往生し続けます。オブジェクトの配列が同じ値を持っているかどうかを確認するにはどうすればいいですか

var userdetail = [ 
    { name: "Steve", adressID: "1", phoneType:"main", phonenumber:"12222228"}, 
    { name: "Steve", adressID: "1", phoneType:"fax" , phonenumber:"55555668"}, 
    { name: "Peter", adressID: "2", phoneType:"main", phonenumber:"67544442"}, 
    { name: "Elaine", adressID: "3", phoneType:"main", phonenumber:"87877778"}, 
    { name: "Elaine", adressID: "3", phoneType:"mobile",phonenumber:"23234678"}, 
    { name: "Steve", adressID: "1", phoneType:"work", phonenumber:"42222228"}, 
]; 

私、その後、あなたが好きな名前のアクセスをhereを参照し、まず、ここで

 { 
    "name": "Steve", 
    "adressID": "1", 
    "phoneType": "main", 
    "phonenumber": "12222228" 
}, 
{ 
    "name": "Steve", 
    "adressID": "1", 
    "phoneType": "fax", 
    "phonenumber": "55555668" 
}, 
{ 
    "name": "Steve", 
    "adressID": "1", 
    "phoneType": "work", 
    "phonenumber": "42222228" 
} 
+1

期待される出力はどのように見えますか? – brk

+2

あなたが試したコードも共有してください。 –

+0

@brk私は自分の質問を更新し、@ palaesは私が試した私のフィドルWhtを更新する – user3558981

答えて

1

あるAddressId

var userdetail = [{ 
 
    name: "Steve", 
 
    adressID: "1", 
 
    phoneType: "main", 
 
    phonenumber: "12222228" 
 
    }, 
 
    { 
 
    name: "Steve", 
 
    adressID: "1", 
 
    phoneType: "fax", 
 
    phonenumber: "55555668" 
 
    }, 
 
    { 
 
    name: "Peter", 
 
    adressID: "2", 
 
    phoneType: "main", 
 
    phonenumber: "67544442" 
 
    }, 
 
    { 
 
    name: "Elaine", 
 
    adressID: "3", 
 
    phoneType: "main", 
 
    phonenumber: "87877778" 
 
    }, 
 
    { 
 
    name: "Elaine", 
 
    adressID: "3", 
 
    phoneType: "mobile", 
 
    phonenumber: "23234678" 
 
    }, 
 
    { 
 
    name: "Steve", 
 
    adressID: "1", 
 
    phoneType: "work", 
 
    phonenumber: "42222228" 
 
    }, 
 
]; 
 
var result = userdetail.reduce(function(res, o) { 
 
    res[o.adressID] || (res[o.adressID] = []); // if the adressID key doesn't exist, set it to be an array 
 

 
    res[o.adressID].push(o); // push the object into the array 
 

 
    return res; 
 
}, {}); 
 
console.log(result)
としてこの同じキーを持つオブジェクトの配列であろうあるAddressIdキーと、このキーの値となるオブジェクトを作成

+0

ありがとう@brkは一度試してみるといいかもしれません – user3558981

0

それを行うための一つの方法であること、機能がSO答えるから撮影されたアレイをGROUPBYすべきアウト期待、以下のスニペットを参照してください!

var userdetail = [{ 
 
    name: "Steve", 
 
    adressID: "1", 
 
    phoneType: "main", 
 
    phonenumber: "12222228" 
 
    }, 
 
    { 
 
    name: "Steve", 
 
    adressID: "1", 
 
    phoneType: "fax", 
 
    phonenumber: "55555668" 
 
    }, 
 
    { 
 
    name: "Peter", 
 
    adressID: "2", 
 
    phoneType: "main", 
 
    phonenumber: "67544442" 
 
    }, 
 
    { 
 
    name: "Elaine", 
 
    adressID: "3", 
 
    phoneType: "main", 
 
    phonenumber: "87877778" 
 
    }, 
 
    { 
 
    name: "Elaine", 
 
    adressID: "3", 
 
    phoneType: "mobile", 
 
    phonenumber: "23234678" 
 
    }, 
 
    { 
 
    name: "Steve", 
 
    adressID: "1", 
 
    phoneType: "work", 
 
    phonenumber: "42222228" 
 
    }, 
 
]; 
 

 
var groupBy = function(xs, key) { 
 
    return xs.reduce(function(rv, x) { 
 
    (rv[x[key]] = rv[x[key]] || []).push(x); 
 
    return rv; 
 
    }, {}); 
 
}; 
 

 
var data = groupBy(userdetail, 'name'); 
 
console.log(data); 
 

 
//access values for steve 
 
for (var k of data['Steve']) { 
 
    console.log(k['phonenumber']); 
 
    console.log(k['phoneType']); 
 
}
.as-console { 
 
    height: 100%; 
 
} 
 

 
.as-console-wrapper { 
 
    max-height: 100% !important; 
 
    top: 0; 
 
}

+0

@ user3558981ここにはjqueryはありません....あなたはapplyメソッドを使用して最良の出力を得ることができます –

0

私はこのようなもののためにLodashを好むデータ争い)...

var results = _.filter(userdetail, {name: 'Steve'}); 
関連する問題