如何动态拆分字符串然后在Angular中作为数组返回

时间:2018-01-22 02:02:06

标签: javascript arrays angularjs

例如,我有这个字符串

recipe.Tags = "Filipino Cuisine,Easy";

我希望将其转换为下面的数组。

$scope.tags = [{ Name: "Filipino Cuisine" },
               { Name: "Easy"},
              ];

我可以使用下面的代码,但它只适用于带有2个标签的字符串。

$scope.tags = [ { Name: recipe.Tags.split(',')[0] },
                { Name: recipe.Tags.split(',')[1] },
              ];

3 个答案:

答案 0 :(得分:2)

我要做的是将标记保存在数组中,然后迭代它以获得scope.tags。像这样:

var arrTags = recipe.Tags.split(',');
$scope.tags = [];

for(var i in arrTags) {
    var obj = {Name : arrTags[i]};
    $scope.tags.push(obj);
}

答案 1 :(得分:2)

您可以直接使用.split和.map来获取数组并转换为对象数组

var recipe = {};
recipe.Tags = "Filipino Cuisine,Easy";
arr = recipe.Tags.split(',').map(function(item) {
  return {name: item};
});
 console.log(arr);
 

样本

var app = angular.module('testApp',[]);
app.controller('testCtrl',function($scope){
    var recipe ={};
    recipe.Tags = "Filipino Cuisine,Easy";
    $scope.tags = recipe.Tags.split(',').map(function(item) {
    return {name: item};
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="testApp" ng-controller="testCtrl">
 <li ng-repeat="tag in tags">
   <h1> {{tag.name}}</h1>
 </li>
</body>

答案 2 :(得分:0)

您可以使用Lodash库和链_.split和_.map来获取对象数组。

var str = 'Filipino Cuisine,Easy',
myObj = _.map(_.split(str,','),(value)=>{
  return {Name:value}
});