AngularJS中如何定位并输出数组内对象的字符串?新手求助
AngularJS 1.X 定位数组中指定firstname的对象并输出日志
你的代码存在两个关键错误,导致无法正确定位目标对象:
- 数组属性访问错误:
$scope.details是数组类型,不能直接通过$scope.details.firstname访问元素属性,必须先从数组中找到对应的对象 - 条件匹配逻辑错误:你判断的是
firstname == "Dave Del Rio",但目标对象的firstname是"Dave","Del Rio"是lastname字段的内容,条件完全不匹配
修复后的代码示例
推荐使用数组的find()方法直接定位目标对象,写法简洁直观:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Profile Details AngularJS 1.X</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.6/angular.js"></script> </head> <body> <div class="container" ng-app="DetailApp"> <div ng-controller="PostController"></div> </div> <script> var app = angular.module('DetailApp', []); app.controller('PostController', function($scope) { $scope.details = [ {firstname: "Dave", lastname: "Del Rio"}, {firstname: "Gerald", lastname: "Kingston"}, {firstname: "Larry", lastname: "Jackson"} ]; // 查找firstname为Dave的对象 const targetUser = $scope.details.find(item => item.firstname === "Dave"); if (targetUser) { console.log(`Hello ${targetUser.firstname} ${targetUser.lastname}!`); console.log("匹配到的用户对象:", targetUser); } else { console.log("sorry, You're not welcome!"); } }); </script> </body> </html>
兼容旧环境的遍历方案
如果你的运行环境不支持ES6箭头函数,可改用传统的forEach遍历:
let targetUser = null; $scope.details.forEach(function(item) { if (item.firstname === "Dave") { targetUser = item; } });
内容的提问来源于stack exchange,提问作者Hilario Abe
相关产品推荐
相关产品推荐

