所以,我想获得具有价值的特定键并将它们推送到将用于ng-repeat的新数组,我花了几天时间找到一些解决方案......
我有对象
{"id": 5, "code": "05", "name": "Apple", "item": "907520193", "item2": "3234234234", "item3": "4343232", "item4": "32342342", "item5": "78979" }
我想在仅使用此键项目,项目2,项目3,项目4,项目5 (第一项没有数字)的角度中使用下拉/选择框。
答案 0 :(得分:4)
使用对象键,数组过滤器和地图来实现这一目标,
let obj = { "id": 5, "code": "05", "name": "Apple", "item": "907520193", "item2": "3234234234", "item3": "4343232", "item4": "32342342", "item5": "78979" };
let arr=Object.keys(obj).filter((key)=>key.indexOf('item')>-1).map((key)=>obj[key]);
console.log(arr);

答案 1 :(得分:0)
这是一种更“有棱角”的方式。此示例将迭代键。在代码中,k
是关键,v
是值。它将在第三个属性处启动选项(如果数据分散,请参阅下面的注释)。我将其设置为在下拉列表中显示键,并将值设置为值。你当然可以只使用其中一种,交换它们等等。
我更喜欢这种方法而不是生成数组,因为它不需要完成两次迭代(首先是通过预处理,然后是显示)。
如果您不知道项目的开始位置,可以改用:
<option ng-repeat="(k,v) in data" value="{{v}}" ng-if="k.indexOf('item') > -1">{{ k }}</option>
var app = angular.module('app', []).controller('controller', controller);
function controller($scope) {
$scope.data = {
"id": 5,
"code": "05",
"name": "Apple",
"item": "907520193",
"item2": "3234234234",
"item3": "4343232",
"item4": "32342342",
"item5": "78979"
};
}
<!DOCTYPE html>
<html ng-app="app">
<head>
<script src="//code.angularjs.org/1.6.0/angular.min.js"></script>
<script src="script.js"></script>
</head>
<body ng-controller="controller">
<select name="repeatSelect" id="repeatSelect" ng-model="selected">
<option ng-repeat="(k,v) in data" value="{{v}}" ng-if="$index >= 3">{{ k }}</option>
</select>
<hr /> {{ selected }}
</body>
</html>