Javascript 满足条件后将对象推送到空数组
我已经创建了两个从RESTAPI获取数据的服务。这些服务返回具有名称、ID和一些与Javascript 满足条件后将对象推送到空数组,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我已经创建了两个从RESTAPI获取数据的服务。这些服务返回具有名称、ID和一些与foo或bar名称相关的唯一键的对象。我还为企业提供了一项同样的服务,包括名称、ID以及与该企业相关的foo/bar 不幸的是,这方面的数据模型……并不理想。它不只是显示哪个foo/bar附加到该业务,而是为每个业务都提供了foo或bar,并带有published:true/falsekey/val对 我试图做的是获取URL名称,在我的foo对象中循环,检查当前URL中的名称和数据是否匹配,以及它们是否将该对象存储
foo
或bar
名称相关的唯一键的对象。我还为企业提供了一项同样的服务,包括名称、ID以及与该企业相关的foo
/bar
不幸的是,这方面的数据模型……并不理想。它不只是显示哪个foo
/bar
附加到该业务,而是为每个业务都提供了foo
或bar
,并带有published:true/false
key/val对
我试图做的是获取URL名称,在我的foo
对象中循环,检查当前URL中的名称和数据是否匹配,以及它们是否将该对象存储在$scope.results
中。从这里,我想循环我的业务对象,检查它的条件数据
id是否与新的$scope.results
数组的id匹配。一旦满足此条件,我想将这些业务存储在$scope.businesss
数组中。目前,我正在返回所有业务,而不仅仅是那些与当前$scope.results
id具有相同id的业务。我怀疑问题可能是a)我是noob(最有可能)或b)发布的是真/假正在产生问题
提前感谢您的帮助,如果我还需要澄清什么,请告诉我。我对Angular和JS作为一个整体还是相当陌生的,所以我不确定我是如何尝试做到这一点的。如果有人有更好的想法,我愿意接受
.controller('ResultsController', function($scope, $location, getData) {
$scope.businesses = [];
$scope.results = [];
var url = $location.path().split('/')[2]; // we do this because it's always going to follow a pattern of /:base/:name
function init() {
getData.getConditions().success(function(data) {
var tempCondition = data;
var tempData;
for (var condition in tempCondition) {
tempData = tempCondition[condition];
if (url === tempData.name) {
$scope.results = tempData;
}
}
})
.error(function(data, status, headers, config) {
console.log('err: ' + data);
});
getData.getBusinesses().success(function(data) {
var tempBusinesses = data,
tempConditionData;
for (var business in tempBusinesses) {
tempConditionData = tempBusinesses[business].conditionData;
for (var condition in tempConditionData) {
if (tempConditionData[condition].id === $scope.results.id) {
$scope.businesses.push(tempBusinesses[business]);
}
}
}
})
.error(function(data, status, headers, config) {
console.log('err: ' + data);
});
}
init();
});
您正在使用的两个http调用也可能有问题,因为它们彼此依赖。如果第一次调用需要一些时间,您的第二次http调用将首先返回。我发现自己在大多数情况下都使用SO作为橡皮鸭,我一输入完问题就基本上解决了这个问题。这是由于published:true/false
key/val对造成的
我所要做的就是改变
for (var condition in tempConditionData) {
if (tempConditionData[condition].id === $scope.results.id) {
$scope.businesses.push(tempBusinesses[business]);
}
}
到
使用SO作为橡皮鸭我可能应该在英语StackExchange上问这个问题,但是使用某物作为橡皮鸭意味着什么?基本上,你向字面上的橡皮鸭(或任何对象)详细解释你正在尝试做什么,你尝试做什么,以及预期结果是什么然后你的大脑计算出细节,并想出不同的方法来解决。是的,这是另一件事,我必须去做,使它更优化。你有什么建议吗?编辑:忽略,这与我的问题无关。那是另一个时间的单独话题。
for (var condition in tempConditionData) {
if (tempConditionData[condition].id === $scope.results.id && tempConditionData[condition].published === true ) {
$scope.businesses.push(tempBusinesses[business]);
}
}