我想返回所有元素的var“source”值,现在当我把“source”放出每个函数时,它变得未定义。我想返回整个源数组。怎么做?任何帮助都会得到真正的赞赏 -
function _getSource(){
var product = fpd.getProduct(true);
$(product[0].elements).each(function(i, elem) {
var source = elem.parameters['source'];
})
return source;
alert (source);
}
答案 0 :(得分:1)
假设您实际上在包含每个元素的source
属性的数组之后:
function _getSource(){
var product = fpd.getProduct(true);
return $(product[0].elements).map(function(i, elem) {
return elem.parameters['source'];
}).get(); // .get() turns jQuery collection into an array
}
.map
是.each
/ push
组合的非常好的替代品。它来自函数式语言,其中“map”函数只接受一个数组,转换每个元素,并返回这些转化结果的新数组。
如果您不介意获取类似的结果而不是正确的数组,那么最终的.get
并非绝对必要。
答案 1 :(得分:1)
当您编写var source
时,您声明了一个范围为each
回调函数的新变量。在外面声明它并摆脱var
所以你只是分配而不是重新声明,你可能也想建立一个数组而不仅仅是分配。像这样:
function _getSource(){
var product = fpd.getProduct(true);
var sources = [];
$(product[0].elements).each(function() {
sources.push(elem.parameters['source']);
})
return sources;
}
答案 2 :(得分:0)
source
仅在each
函数中定义,因为您var
将其放在那里。
请改为尝试:
function _getSource() {
return $(fpd.getProduct(true)[0].elements).map(function() {return this.parameters['source'];});
}