我本来打算通过forEach
loop
在AngularJS
。有几点我不了解。
angular.forEach($scope.data, function(value, key){});
PS: 我试图在不带参数的情况下运行此函数,但它不起作用。
这是我的json
:
[
{
"Name": "Thomas",
"Password": "thomasTheKing"
},
{
"Name": "Linda",
"Password": "lindatheQueen"
}
]
我的JavaScript
档案:
var app = angular.module('testModule', []);
app.controller('testController', function($scope, $http){
$http.get('Data/info.json').then(
function(data){
$scope.data = data;
}
);
angular.forEach($scope.data, function(value, key){
if(value.Password == "thomasTheKing")
console.log("username is thomas");
});
});
另一个问题 :如果在控制台中出现条件并显示“ username is thomas”,为什么上面的功能没有打开?
因此,基本上,第一个参数是要迭代的对象。它可以是数组或对象。如果它是这样的对象:
var values = {name: 'misko', gender: 'male'};
Angular将一个一个地取每个值,第一个是名称,第二个是性别。
如果要迭代的对象是数组(也是可能的),则如下所示:
[{ "Name" : "Thomas", "Password" : "thomasTheKing" },
{ "Name" : "Linda", "Password" : "lindatheQueen" }]
Angular.forEach将首先从第一个对象开始,然后是第二个对象。
对于此对象中的每个对象,都将一个接一个地对待它们,并对每个值执行特定的代码。此代码称为 迭代器函数
。如果您使用集合的数组,则forEach很聪明,并且行为也有所不同。这是一个例子:
var obj = {name: 'misko', gender: 'male'};
var log = [];
angular.forEach(obj, function(value, key) {
console.log(key + ': ' + value);
});
// it will log two iteration like this
// name: misko
// gender: male
所以key是您的键的字符串值,而value是…的值。您可以像这样使用键来访问您的值:obj['name'] = 'John'
如果这一次您显示一个数组,如下所示:
var values = [{ "Name" : "Thomas", "Password" : "thomasTheKing" },
{ "Name" : "Linda", "Password" : "lindatheQueen" }];
angular.forEach(values, function(value, key){
console.log(key + ': ' + value);
});
// it will log two iteration like this
// 0: [object Object]
// 1: [object Object]
因此,值是您的对象(集合),键是数组的索引,因为:
[{ "Name" : "Thomas", "Password" : "thomasTheKing" },
{ "Name" : "Linda", "Password" : "lindatheQueen" }]
// is equal to
{0: { "Name" : "Thomas", "Password" : "thomasTheKing" },
1: { "Name" : "Linda", "Password" : "lindatheQueen" }}
问题似乎来自$http.get()
一个异步请求。
您向儿子发送查询, 然后 在浏览器结束下载时发送成功。 但是
在发送请求后,您angular.forEach
无需等待JSON的回答就可以执行循环。
您需要在成功函数中包含循环
var app = angular.module('testModule', [])
.controller('testController', ['$scope', '$http', function($scope, $http){
$http.get('Data/info.json').then(function(data){
$scope.data = data;
angular.forEach($scope.data, function(value, key){
if(value.Password == "thomasTheKing")
console.log("username is thomas");
});
});
});
这应该工作。
在$ HTTP
API是基于延迟/承诺的API由$
Q服务公开。虽然对于简单的使用模式而言,这并不重要,但对于高级用法,熟悉这些API及其提供的保证很重要。
您可以看一下延迟/承诺API,这是Angular进行平滑异步操作的重要概念。
foreach循环遍历列表值并将控制变量(var)依次设置为列表的每个元素 - 语法 (Syntax) Perl编程语言中foreach循环的语法是 - foreach var (list) { ... } 流程图 (Flow Diagram) 例子 (Example) #!/usr/local/bin/perl @list = (2, 20, 30, 40, 50); # foreach lo
我尝试将一个循环转换为一个循环在flutter中等待循环。我想要循环的元素是Firebase实时数据库中的快照。 我的函数如下所示: 我尝试了不同的方法,但是我没有让函数工作。 第一次尝试: 错误: 未处理的异常:键入'_InternalLinkedHashMap 第二次尝试: 错误: 未处理的异常:键入'_InternalLinkedHashMap 在所有的尝试中,我都得到了相同的错误。但是上述
除了前面介绍的几种循环语句外,C# 同样也支持 foreach 循环,使用 foreach 可以遍历数组或者集合对象中的每一个元素,其语法格式如下: foreach(数据类型 变量名 in 数组或集合对象){ 语句块; } foreach 会在每次循环的过程中,依次从数组或集合对象中取出一个新的元素放到 里定义的变量中,直到所有元素都成功取出后退出循环。 【示例】使用 foreach 循环
本文向大家介绍C# Foreach循环,包括了C# Foreach循环的使用技巧和注意事项,需要的朋友参考一下 示例 foreach将迭代实现的类的任何对象IEnumerable(请注意IEnumerable<T>从其继承的对象)。此类对象包括一些内置对象,但不限于:List<T>,T[](任何类型的数组),Dictionary<TKey, TSource>以及诸如IQueryable和IColl
Perl 循环 Perl foreach 循环用于迭代一个列表或集合变量的值。 语法 语法格式如下所示: foreach var (list) { ... } 流程图 Perl 循环
我有一个这样的数组 我想做的是前面的模型,为其数量绘制徽标,因此三星=3,索尼=7,以此类推,将绘制3个索尼徽标和7个三星徽标。 我想出了这样的办法 但是当然,所有这些都是为了每个数组条目,呼应出名称,所以我最终打印了5个三星,打印了5个索尼,等等。 如何使其使用 qty 数组的值而不是条目数?