2016-07-11 3 views
2

У меня есть сценарий для объединения значений одного и того же свойства с seperator. Является ли это возможным. Моя структура JSON как это:Как совместить два значения одного и того же свойства в объекте с помощью разделителя запятой?

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

Я хочу, чтобы отобразить значение ключа (имя), как aa, bb.

+3

Сделайте «console.log» этот объект и проверьте его свойства .. Вам понравится .. – Rayon

+1

не может использовать один и тот же ключ внутри объекта, если u использует последнее значение, только u может получить cz, он заменит старый –

+0

@gayathri ok.but, если у меня есть массив строк ["aa", "bb"], тогда мне нужно отображать их в строке таблицы с seperator, это возможно. – anub

ответ

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()); 
0

Вы используете один и тот же ключ name в вашем JSON.

Это не имеет смысла. Вместо этого, вы можете попробовать этот подход:

Создать уникальные ключи в формате JSON, как,

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

    ])); 

Затем вам нужно загрузить JSON в $scope переменной от вашего controller

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 page,

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

</div> 

Надеюсь, это поможет!

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> 

Создание фильтра позволяет использовать его в любое время. Вам нужно будет просто поместить переменные, которые вы хотите объединить разделителем вместо var1 и var2.

С уважением.

Смежные вопросы