如何遍历对象数组并重写属性值

How To Loop Over Array Of Objects And Rewrite A Property Value

本文关键字:数组 重写 属性 对象 何遍历 遍历      更新时间:2023-09-26

我有一个包含对象的 Feature 数组。featureUrl 从它从数据库中收集的服务返回。在我使用 ngRoute 的桌面角度应用程序中,一切都很好用。但是,我正在构建一个使用 UIRouter 的 Ionic 移动应用程序,这似乎导致了一个问题。我无法构建如下所示的 url,因为它们都从状态提供程序输出"index.html#/app/my-account"。

离子代码缩写

.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider
.state('app', {
url: '/app',
abstract: true,
templateUrl: 'templates/menu.html',
controller: 'AppCtrl'
})
.state('app.my-account', {
url: '/my-account',
views: {
  'menuContent': {
    templateUrl: 'templates/my-account.html',
    controller: 'accountController'
  }
}
})

所以,我的问题是,在我的 Ionic 应用程序中,是否可以直接从尾部斜杠构建 URL?(即 index.html#/my-account)所以它们与我的 Svc 对象匹配,还是它们总是附加到"app"后面,如 index.html#/app/my-account?

如果没有,有人可以帮助我循环我的对象并拆分 Url 字符串并将/app/插入到 url 中,以便我的数据适用于 UIRouter?

Features
[{
featureClass: 'hasStuff',
featureUrl: 'index.html#/my-account',
featureBlah: 'blah'
},
{
featureClass: 'hasCoolStuff',
featureUrl: 'index.html#/my-profile',
featureBlah: 'blah' 
},
{
featureClass: 'hasMoreCoolStuff',
featureUrl: 'index.html#/motorcycles',
featureBlah: 'blah'
}]

这是我在重写 featureUrl 字符串时的想法,但遇到了困难。

var featureUrlRewrite = function () {
  var index;
  var alteredUrl;
for (index = 0, index < $scope.Features.length, index++) {
   alteredUrl = $scope.featureUrl[index];
   featureUrl = alteredUrl.split("/").append("app/")
}
};

如果您使用正则表达式在 # 符号后面添加"/app",它可能会起作用:

for(var index=0, index<$scope.Features.length(); index++){
   $scope.Features[index]['featureUrl'] = $scope.Features[index]['featureUrl'].replace("(.*#)(.*)", "$1/app$2"); 
}

这应该捕获之前的所有内容,包括 # 符号以及它之后的所有内容,作为单独的捕获并在字符串的两个部分之间插入/app。

我不熟悉ngRoute或您正在使用的平台,但希望对您有所帮助!