Bar*_*man 4 javascript arrays foreach
我有一个数组:
var allchildsAr = new Array();
Run Code Online (Sandbox Code Playgroud)
我用一个具有parent属性(一个对象)的对象和一个chlds属性的数组填充它.
这是填充数组的代码:
Ti.API.info("*****allchildsAr["+level+"] is null and "+elmn+" children will be added to it ");
allchildsAr[level] = new Array({parent:elmn,chlds:elmn.getChildren()});
Run Code Online (Sandbox Code Playgroud)
以下是我在添加后尝试显示数组的方法:
Ti.API.info("*****allchildsAr["+level+"] after add");
allchildsAr[level].forEach(logArrayJsonElements);
Run Code Online (Sandbox Code Playgroud)
该logArrayJsonElements方法如下:
function logArrayElements(elemnt, indx, array) {
Ti.API.info("*****Element at [" + indx + "] : " + elemnt.id);
}
function logArrayJsonElements(elemnt, indx, array) {
Ti.API.info("*****Element at [" + indx + "] : " + elemnt.parent.id);
elemnt.chlds.forEach(logArrayElements);
}
Run Code Online (Sandbox Code Playgroud)
这工作正常但我想要的是传递父元素,logArrayElements所以我可以将它显示为数组显示元素的父元素(以后再用它做另外的东西..)
function logArrayElements(elemnt, indx, array, parent) {
Ti.API.info("*****Element at [" + indx + "] : " + elemnt.id+" child of :"+parent);
}
Run Code Online (Sandbox Code Playgroud)
而现在我很困惑,因为当它logArrayElements被调用内部时forEach它不接受参数并且它们是隐式传递的,如果我添加了parent我就像我做的那样它被用于另一个参数(通常是element参数)而且无论如何我都没有通过他们中的任何一个如何获得parent函数内部并使其foreach像其他参数一样传递?
您可以通过将您的forEach行修改为:
function logArrayJsonElements(elemnt, indx, array) {
Ti.API.info("*****Element at [" + indx + "] : " + elemnt.parent.id);
elemnt.chlds.forEach(function (element, index, arr) {
logArrayElements(element, index, arr, elemnt.parent.id);
});
}
Run Code Online (Sandbox Code Playgroud)