Angular中有没有一种方法可以将字符串数组转换为修改后的字符串数组?

时间:2019-04-06 21:29:55

标签: javascript angularjs

问题

我想获取一个字符串数组:["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),但四处搜索后找不到文档。有办法吗?我感觉这是一个非常简单的操作,因此在寻找答案时一定会丢失一些东西。

2 个答案:

答案 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)

有关更多信息,请参见