我有将相同属性的值与分隔符组合在一起的方案。可能吗。我的json结构是这样的:
{
"name": "aa",
"name": "bb",
"name1": "cc",
"name2": "dd"
}
我想将key(name)的值显示为aa, bb
。
答案 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>,</span>
{{name.name0}}
<span>,</span>
{{name.name1}}
<span>,</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>
创建过滤器使您可以随时使用它。您必须放置要通过分隔符加入的变量来代替var1
和var2
。
问候。