我想获取一个字符串数组:["foo", "bar", "baz"]
并将其转换为角度模板内的修改后的数组["hello foo apple", "hello bar apple", "hello baz apple"]
。
使用此数组,我已经在控制器中具有实用程序功能,可以让我sentence-ify
将该数组设为"hello foo apple, hello bar apple, and hello baz apple"
。如果数组的长度不同,它将说明这些长度并以不同的方式显示它们,例如[1,2]
变成"1 and 2"
或[1]
变成"1"
或'[1 ,2,3,4,5]'变成"1, 2, 3, 4, and 5"
。
<div ng-if="array_foo">
{{array_foo sentence-ify}}
</div>
上面的代码会给我:
<div>hello foo apple, hello bar apple, and hello baz apple</div>
我知道您可以使用ng-repeat
,但据我所知,它实际上并不返回数组,而是返回重复项的html。
我只需要将数组转换为修改后的array(map),但四处搜索后找不到文档。有办法吗?我感觉这是一个非常简单的操作,因此在寻找答案时一定会丢失一些东西。
答案 0 :(得分:2)
也许尝试使用过滤器之类的东西
<div ng-if="array_foo">
{{array_foo | myFormat}}
</div>
var app = angular.module('myApp', []);
app.filter('myFormat', function() {
return function(x) {
if(!angular.isArray(x))return x;
return x.map(function (item, index, arr) {
if(index+1 === arr.length) return " and hello " + item + " apple";
return "hello " + item + " apple";
}).join(',');
};
});
答案 1 :(得分:1)
我认为您正在尝试执行以下操作:
var originalArray = ["foo", "bar"];
originalArray = originalArray.map(function (item) {
return "Hello " + item + " apple";
});
console.log(originalArray)
有关更多信息,请参见