Chrome的array.map工作正常,但jQuery .map以某种方式生成循环引用.我看不到任何使用循环引用的证据console.log,但JSON.stringify会抛出Uncaught TypeError: Converting circular structure to JSON第二个块.
在JSFiddle上运行它:http://jsfiddle.net/langdonx/vQBak/
或者检查代码:
var callback = function(index, element) {
return {
"index": index
};
};
var array1 = ["1", "2"];
var mappedArray1 = array1.map(callback);
console.log(mappedArray1);
var json1 = JSON.stringify(mappedArray1);
console.log(json1);
var jqueryArray2 = $('body > div');
var mappedArray2 = jqueryArray2.map(callback);
console.log(mappedArray2);
var json2 = JSON.stringify(mappedArray2); // Chokes with "Uncaught TypeError: Converting circular structure to JSON"
console.log(json2);?
Run Code Online (Sandbox Code Playgroud)
是的,我正在使用相同的回调,是的ECMAScript map以不同的顺序传递参数,但这个例子无关紧要,因为它们都是简单类型(字符串,数字).
Ant*_*ist 19
jQuery .map()函数返回一个包含数组的jQuery对象,而不是实际的数组,这可能是一个重要的区别.试着打电话:
var json2 = JSON.stringify(mappedArray2.get());
Run Code Online (Sandbox Code Playgroud)
调用.get()将返回实际数组而不是jQuery对象.
| 归档时间: |
|
| 查看次数: |
628 次 |
| 最近记录: |