[英]How can I check if the array of objects have same values
在这里,我的数组包含相同的地址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"},
];
我的预期应该是
{
"name": "Steve",
"adressID": "1",
"phoneType": "main",
"phonenumber": "12222228"
},
{
"name": "Steve",
"adressID": "1",
"phoneType": "fax",
"phonenumber": "55555668"
},
{
"name": "Steve",
"adressID": "1",
"phoneType": "work",
"phonenumber": "42222228"
}
创建一个对象,其中addressID将为键,并且此键的值将为具有与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)
这是一种方法,首先对数组进行分组,从SO答案中获取函数,请在此处参考,然后访问所需的任何名称,请参考以下代码段!
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; }
我喜欢Lodash这样的事情(数据争吵)...
var results = _.filter(userdetail, {name: 'Steve'});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.