我需要替换对象属性值中的字符。我循环遍历对象数组(输出到控制台)并检索FeatureUrl属性。
我以下列形式从Svc返回该属性的数据:
的index.html#/嗒嗒
我需要将'#'替换为'#/ app',以便我的新网址以下列形式返回:
的index.html#/应用/嗒嗒
我不确定.replace是否是正确使用的方法,但这是我所看到的建议。有人能指出我正确的方向吗?
var localFeatureDetails = function() {
$scope.user = userService.GetUserInformation();
$scope.featureDetails = $scope.user.Features;
var featureUrlRewrite = function () {
var index;
var urlCount;
for (index = 0; index < $scope.featureDetails.length; index++) {
urlCount = $scope.featureDetails[index];
urlCount.FeatureUrl.replace("#","#/app");
console.log(urlCount);
}
};
featureUrlRewrite();
};
localFeatureDetails();
答案 0 :(得分:1)
我没有测试您的代码,但根据.replace()
的工作原理,您必须通过覆盖它再次将值分配给您的对象属性,否则您不会保存该值。
假设其他一切都正确,请尝试以下方法:
$scope.featureDetails[index].FeatureUrl = urlCount.FeatureUrl.replace("#","#/app");
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace
答案 1 :(得分:1)
我认为你可能想要更像这样的东西
$scope.featureDetails.map(detail => angular.merge({}, detail,
{ FeatureUrl: detail.replace('#', '#/app') }))
而不是庞大的for循环。
我们从detail
数组中取出每个featureDetails
对象,访问FeatureUrl
属性并将#
替换为#/app
.merge(destination, ...sources)
将 来源 合并到 目的地 ,左边 - 从右到右,覆盖属性。
所以angular.merge({}, {foo: 5, bar: 3}, {foo: 7})
会返回{ foo: 7, bar: 3 }
删除console.log()
,但您始终可以
console.log($scope.featureDetails);
然后查看检查器中返回的对象。