Вот мой объект:
$scope.info = [];
$scope.info = [{"name":"kanye","size":"","folder":"Folder"},{"name":"west","size":"","folder":"Folder"}]
$scope.infoObj = $scope.info.name;
console.log($scope.infoObj);
Это вернет мне Неопределенный. Ответ должен быть следующим:
[{"name":kanye},{"name":west}]
Но как получить доступ к конкретным свойствам из нескольких объектов с помощью angularJS или jquery/js?
Вы можете сделать немного рефакторинга, чтобы сделать ваш код немного более чистым и читаемым. Вместо того, чтобы дважды установить значение своей info
, установите его один раз и добавьте объекты в каждую строку после.
Как это:
$scope.info = [];
$scope.info.push({
"name":"kanye",
"size":"",
"folder":"Folder"
});
$scope.info.push({
"name":"west",
"size":"",
"folder":"Folder"
});
Посмотрите, насколько это чисто? Теперь должно быть достаточно очевидно, что info
- это массив объектов, поэтому $scope.info.name
не будет работать. Я бы рекомендовал создать функцию поиска, которая поможет захватить список на основе ключа, который вы ему предоставляете.
Что-то вроде этого:
function lookup(key) {
var result = [];
for (var i = 0; i < $scope.info.length; i++) {
var object = {};
object[key] = $scope.info[i][key];
result.push(object);
}
return result;
}
И затем назовите это так:
$scope.infoObj = lookup('name');
console.log($scope.infoObj);
Это должно решить проблему:
$scope.infoObj = $scope.info.map(function(obj){
var x = {};
x['name'] = obj['name'];
return x;
})
для ES6 можно упростить:
$scope.infoObj = $scope.info.map(x => ({name:x['name']}))
$scope.info.map(obj=>({name: obj.name});
[]
означает Array , к которому обычно обращаются такие вещи, как[0]
, поэтому, возможно, вам следует попробовать$scope.info[0].name