为了拦截数以万计的亲密选票,我可以强调它与this thread无关,更不用说回答了。{/ em>
我不确定如何将 $。each(...)构造中的值返回到外部作用域。假设我们有一个JSON对象数组(或者那个数组的数组)。
var output = "";
$.each(array, function (key1, value1) {
output += "[" + key1 + "] --> ";
$.each(value1, function (key2, value2) {
output += key2 + ":" + value2 + " ";
});
});
console.log(output);
现在,正如上面的例子所示,我依赖于我从每个范围的子级写入的预先声明的输出。有用。但是,我不能不觉得这不是最好的方法。我想返回一些内容,而不是将其附加到半全局输出。
答案 0 :(得分:4)
如果您想使用return
- 请改为.reduce()
:
var output = array.reduce(function(p, value1, key1) {
var nested = value1.reduce(function(p, value2, key2) {
return [p, key2, ':', value2, ' '].join('');
}, '');
return [p, '[', key1, '] --> ', nested].join('');
}, '');
console.log(output);
答案 1 :(得分:4)
.each()
中的return语句返回循环是否继续。要让.each()
返回一个值,您可以使用.map()
:
var output = $.map(array, function(v, i){
return "[" + i + "] --> " + $.map(v, function(v, i){
return i+ ':' + v + ' ';
}).join();
}).join();
小提琴:http://jsfiddle.net/stEV6/
但是个人而言,我更喜欢你这样做的方式:使用变数。
答案 2 :(得分:2)
你不能从$.each()
返回值,如果你返回true(或任何非假),这意味着continue
如果你返回false则意味着break
- 这是因为{{1}只是循环并运行你的匿名函数($.each()
语句在你的匿名函数中运行,这就是return
被编程来处理返回值的方式)。
如果你真的必须这样做,请将它包装在如下函数中:
$.each()