如何使用逗号分隔符在对象中组合两个相同属性的值?

时间:2016-07-11 06:25:24

标签: javascript angularjs html5

我有将相同属性的值与分隔符组合在一起的方案。可能吗。我的json结构是这样的:

{
  "name": "aa",
  "name": "bb",
  "name1": "cc",
  "name2": "dd"
}

我想将key(name)的值显示为aa, bb

3 个答案:

答案 0 :(得分:0)

您可以修改json以获得所需的解决方案

var obj = [
  { key : 'name'     , value : 'foo' },
  { key : 'name'     , value : 'bar' },
  { key : 'name1', value : 'baz' }
];
values = [];
for (var i = 0; i < obj.length; i++)
{
  if (obj[i].key === 'name')
  {
      values.push(obj[i].value);
  }
}

console.log(values.join());

答案 1 :(得分:0)

您在JSON中使用相同的密钥name

这没有意义。相反,你可以尝试这种方法:

在JSON中创建唯一键,例如

    var mockDataForThisTest = "json=" + encodeURI(JSON.stringify([
        {
    "name":"aa",
    "name0":"bb",
    "name1":"cc",
    "name2":"dd"},

    ]));

然后,您需要在$scope

controller变量中加载JSON
function nameCtrl($scope, $http) {

$scope.names= [];

$scope.loadNames = function() {
    var httpRequest = $http({
        method: 'POST',
        url: '/echo/json/',
        data: mockDataForThisTest

    }).success(function(data, status) {
        $scope.names= data;
    });

};
}

然后在html页面中,

<div ng-repeat="name in names">
    {{name.name}}
    <span>&#44;</span>
    {{name.name0}}
    <span>&#44;</span>
    {{name.name1}}
    <span>&#44;</span>
    {{name.name2}}

</div>

希望它有所帮助!

答案 2 :(得分:0)

像这样创建过滤器

app.filter('join', function () {
    return function join(array, separator, prop) {
        if (!Array.isArray(array)) {
            return array; // if not array return original - can also throw error
        }

        return (!!prop ? array.map(function (item) {
           return item[prop];
        }) : array).join(separator);
    };
});

在像这样的模板中使用

<span>{{var1 | var2 | join:', ' }}</span>

创建过滤器使您可以随时使用它。您必须放置要通过分隔符加入的变量来代替var1var2

问候。