我如何使用Angularjs从和数组中选择一些对象?



目前我有以下内容:

$scope.org = $.grep($scope.orgList, function (o) { return o.ServiceName === 
model.Org.ItemValue; })[0];

这将搜索组织列表并只提取一个值,其中ItemValue等于model.Org.ItemValue

我该怎么做:我有两个列表

美元范围。具有

值的tempOrgList。
ItemValue = "Org1"
ItemValue = "Org2"
ItemValue = "Org8"

$scope.orgList有对象

ServiceName = "Org1",  Name = "1"
ServiceName = "Org2" , Name = "2"
ServiceName = "Org3"  ,Name = "3"
ServiceName = "Org4" , Name = "4"
ServiceName = "Org5" , Name = "5"
ServiceName = "Org6" , Name = "6"
ServiceName = "Org7" , Name = "7"
ServiceName = "Org8" , Name = "8"
ServiceName = "Org9" , Name = "9"
ServiceName = "Org10", Name = "10"
ServiceName = "Org11", Name = "11"
ServiceName = "Org12", Name = "12"
ServiceName = "Org13", Name = "13"
ServiceName = "Org14", Name = "14"
ServiceName = "Org15", Name = "15"
ServiceName = "Org16", Name = "16"

还有更多的字段,但我只显示了2 .

如何只选择orgList中ServiceName等于"Org1"的对象?和";Org2"one_answers";Org3"然后将它们放入数组中,也就是

中的内容tempOrgList,我想从orgList中选择那些在orgList中的ServiceName等于tempOrgList中的ItemValues ?

您可以使用array.filter的组合来获得只符合条件的元素和array.some的组合来获得只出现在tempOrgList中服务名称等于ItemValue的项目

var newArray = $scope.orgList.filter(oneOrg => $scope.tempOrgList.some(oneTempOrg => oneTempOrg.ItemValue === oneOrg.ServiceName));

下面你会发现js等价于看到回复结果

const tempOrgList = [
{ ItemValue: "Org1"},
{ ItemValue: "Org2"},
{ ItemValue: "Org8"}
]

const orgList = [  
{ServiceName: "Org1",  Name: "1"},
{ServiceName: "Org2" , Name: "2"},
{ServiceName: "Org3"  ,Name: "3"},
{ServiceName: "Org4" , Name: "4"},
{ServiceName: "Org5" , Name: "5"},
{ServiceName: "Org6" , Name: "6"},
{ServiceName: "Org7" , Name: "7"},
{ServiceName: "Org8" , Name: "8"},
{ServiceName: "Org9" , Name: "9"},
{ServiceName: "Org10", Name: "10"},
{ServiceName: "Org11", Name: "11"},
{ServiceName: "Org12", Name: "12"},
{ServiceName: "Org13", Name: "13"},
{ServiceName: "Org14", Name: "14"},
{ServiceName: "Org15", Name: "15"},
{ServiceName: "Org16", Name: "16"}
];
var newArray = orgList.filter(oneOrg => tempOrgList.some(oneTempOrg => oneTempOrg.ItemValue === oneOrg.ServiceName));
console.log(newArray);

最新更新