Angularjs $.grep在匹配后返回属性
我找不到任何这样做的例子,所以我问你们这些聪明的人,是否有一个简单的方法来做我想做的事情 正在尝试将两个数组映射到一起。一个数组有一个ID列表(foo),另一个数组有这些ID的所有属性(条)。想把所有东西都放在我的角度控制器里 这里有一个片段。我正在尝试匹配ID并映射到Name属性Angularjs $.grep在匹配后返回属性,angularjs,multidimensional-array,Angularjs,Multidimensional Array,我找不到任何这样做的例子,所以我问你们这些聪明的人,是否有一个简单的方法来做我想做的事情 正在尝试将两个数组映射到一起。一个数组有一个ID列表(foo),另一个数组有这些ID的所有属性(条)。想把所有东西都放在我的角度控制器里 这里有一个片段。我正在尝试匹配ID并映射到Name属性 $scope.Foos = $.map($scope.Foos, function (foo) { return {
$scope.Foos = $.map($scope.Foos, function (foo) {
return {
ID: foo.ID,
Name: $.grep($scope.bars, function(b){
return b.ID === foo.ID;
}).Name,
Property: $.grep($scope.bars, function(b){
return b.ID === foo.ID;
}).Property
};
});
据我所知,$.grep将根据条件返回该对象,然后我可以调用该返回对象的属性吗
更新:
Foos是ID(guid)
条形图是ID(guid)、名称和属性。
$。grep
返回一个数组,而不是一个对象,因此要执行所需操作,您需要执行以下操作:
Name: $.grep($scope.bars, function(b){
return b.ID === foo.ID;
})[0].Name
$scope.Foos = $.map($scope.Foos, function (foo) {
// first filter the array
var bars = $.grep($scope.bars, function (b) {
return b.ID === foo.ID;
});
// now test we have result, if not make it ... empty string???
var name = bars.length ? bars[0].Name : '';
// do similar for `Property`
return {
ID: foo.ID,
Name: name,
......
};
});
但是,这里的问题是,如果没有匹配,$.grep
将返回一个空数组,您将在尝试从该空数组获取第一个元素时抛出错误
您确实应该首先查找属性,而不是在尝试构建更复杂的对象时
比如:
Name: $.grep($scope.bars, function(b){
return b.ID === foo.ID;
})[0].Name
$scope.Foos = $.map($scope.Foos, function (foo) {
// first filter the array
var bars = $.grep($scope.bars, function (b) {
return b.ID === foo.ID;
});
// now test we have result, if not make it ... empty string???
var name = bars.length ? bars[0].Name : '';
// do similar for `Property`
return {
ID: foo.ID,
Name: name,
......
};
});
还可以修改它,使其具有一些实用功能,如getnamefrombar()
,并将$.grep
放在其中,然后返回找到的值或默认值
如果您想摆脱jQuery,可以使用Array.prototype.map()
和Array.prototype.filter()
替换$.map
和$.grep
也可以使用
$filter
。请给出两个数组值的示例。谢谢,这正是我需要的。我不知道这是一个数组!另外,你用空的选项为我省去了一些麻烦。啊…如果它丢失了,你不确定你想要什么…无法返回对象或做任何最适合你的应用程序的事情