如何使用javascript或Jquery动态更新以下JSON对象?
var jsonObj = [{'Id':'1','Username':'Ray','FatherName':'Thompson'},
{'Id':'2','Username':'Steve','FatherName':'Johnson'},
{'Id':'3','Username':'Albert','FatherName':'Einstein'}]
Run Code Online (Sandbox Code Playgroud)
我想动态地将用户名更新为'Thomas',其中'Id'为'3'.
我该如何实现这一目标?
这两种方法似乎都产生了相同的结果,但我很难真正说服人们第二种方法有效,因为它显然并不常见.
// Create some data
var foo = { 'vals':[ {'id':'foo'}, {'id':'bar'} ] }?????????????????;
// Common Method
$.each(foo.vals, function(i,o){
alert(this.id);
});
// Alternative (lesser-known?) Method
$(foo.vals).each(function(i,o){
alert(this.id);
});
Run Code Online (Sandbox Code Playgroud)
检查来源后,这两个看起来是同一个.第二种方法如下:
each: function( callback, args ) {
return jQuery.each( this, callback, args );
}
Run Code Online (Sandbox Code Playgroud)
这种方法明显地称为更常见的方法,这意味着它同样合法.这种理解是正确的,还是我在这里遗漏了什么?
我通常信任这种方法,因为它不会导致我偏离选择器的标准做法.让我们面对现实吧,我们接受过以下培训:
$("p").each();
Run Code Online (Sandbox Code Playgroud)
所以看起来很自然:
$(obj).each();
Run Code Online (Sandbox Code Playgroud)
我错了吗?
我最近遇到了一个我以前从未见过的jQuery构造.这是一个简化版本:
$([ '1', '2', '3' ]).each( function( index, value ) {
console.log( "index", index, "value", value );
});
Run Code Online (Sandbox Code Playgroud)
这会迭代数组的所有元素[ '1', '2', '3' ].问题是,我习惯看到$(...)与CSS选择器一起使用,但我还没有看到它在新声明的数组上使用,正如在这里所做的那样.它似乎工作(使用Firefox 34和Chromium 39测试).
Q1:我是否理解这相当于
var a = [ '1', '2', '3' ];
for ( var i = 0, value; value = a[i]; i++ ) {
console.log( "index", i, "value", value );
}
Run Code Online (Sandbox Code Playgroud)
如果没有,有什么区别?(除了这声明变量的事实a,i和value).
Q2:就jQuery中的数组迭代而言,我更习惯$.each(不要与$(selector).each上面使用的混淆).以上是否相当于
$.each( [ '1', '2', '3' ], function( index, …Run Code Online (Sandbox Code Playgroud)