我是AngularJS和JSON的新手。我陷入了这个阶段,我想在JSON中过滤不必要的字段。
我在控制器中使用了代码:
var data = $scope.choices; // Is an array
var datav = (JSON.stringify(data)); // array converted into a string need to be filtered
alert(datav);
如果我alert(datav)
正在获取下面提到的JSON数据。
[{"title":"g","$$hashKey":"object:3"},{"id":"choice2","$$hashKey":"object:6","title":"ghgh"},{"id":"choice3","$$hashKey":"object:11","title":"fgh"}]
我只想"标题"我不想要$$hashKey
和id
。怎么做?
答案 0 :(得分:4)
您可以使用angular.toJson
而不是JSON.stringify
来为您省略$$hashkey
。
angular.toJson
将输入序列化为JSON格式的字符串。由于AngularJS在内部使用此表示法,因此将删除具有前导$$字符的属性。
像这样,
var myobj = [{
"title": "g",
"$$hashKey": "object:3"
}, {
"id": "choice2",
"$$hashKey": "object:6",
"title": "ghgh"
}, {
"id": "choice3",
"$$hashKey": "object:11",
"title": "fgh"
}]
console.log(angular.toJson(myobj))
console.log(JSON.stringify(myobj))

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
&#13;
修改:如果您只想显示某些属性,请按照其他答案中的说明使用Array.map
。如果您想省略angular.toJson
保留其他所有内容,$$hashkey
只会对此处有所帮助。
答案 1 :(得分:3)
您可以使用Array.map()功能来实现您想要的功能,并仅返回您感兴趣的属性
var data = [{"title":"g","$$hashKey":"object:3"},{"id":"choice2","$$hashKey":"object:6","title":"ghgh"},{"id":"choice3","$$hashKey":"object:11","title":"fgh"}];
var datav = data.map(d => ({title: d.title}));
console.log(datav)
&#13;
答案 2 :(得分:1)
试试这个
<html>
<head>
<script Src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.js"></script>
<script>
var app=angular.module("myapp", []);
app.controller("namesctrl", function($scope){
var data = [{"title":"g","$$hashKey":"object:3"},{"id":"choice2","$$hashKey":"object:6","title":"ghgh"},{"id":"choice3","$$hashKey":"object:11","title":"fgh"}];
var data1 = data.map(d => ({title: d.title}));
console.log(data1);
});
</script>
</head>
<body ng-app="myapp" ng-controller="namesctrl">
</body>
</html>
&#13;
答案 3 :(得分:0)
var data = $scope.choices.map(function(index,item){
return {id: item.id};
});
这是你如何从选择数组
中映射你需要的所需对象答案 4 :(得分:0)
您可以使用Array.prototype.map。
当您第一次收到阵列时:
const data = [
{title: "hello" , "unwanted" : 34},
{title: "hello" , "unwanted" : 35},
{title: "hello" , "unwanted" : 36},
{title: "hello" , "unwanted" : 37},
]
const wanted = data.map( d => {
return {title: d.title}
});
console.log(wanted);
答案 5 :(得分:0)
我相信您正在使用第三方库。我的猜测是Angular Material
,它为下拉数组值添加了类似的$$haskey
属性。理想情况下,这不应该对您的数组进行任何更改,您仍然可以在数组对象上获取属性。
但是如果你特意想要删除这些不需要的属性,你应该使用.map
函数从这个数组中创建一个新数组。例如:
var newArray= orginalArray.map(element => ({title: element.title}));
您可以根据需要取出任意数量的属性,并留下不需要的属性。您的新数组是与旧数组完全不同的引用。
希望这有帮助