AS3:如何仅使用 1 个 for 循环来比较包含对象的 2 个数组?
AS3 : How to compare 2 array containing objects using 1 for loop only?
我有 2 个包含不同长度对象的数组
var arr : Array = [{name : "aa", id : "0"}, {name : "bb", id : "1"}, {name : "cc", id : "2"}];
var arrTemp : Array = [{name : "ee", id : "0"}, {name : "hh", id : "1"}, {name : "cc", id : "2"}, {name : "gg", id : "3"}];
现在不想用2个for循环遍历数组了。是否可以通过使用任何 属性 之类的 indexOf 或过滤器进行搜索。
目前我正在使用下面的代码,我猜这是不对的
for(var i:* in arr)
{
if( arr[i].indexOf( arrTemp[i].name ) > -1 )
{
trace(i)
}
}
我们将不胜感激。
提前致谢。
基本上你必须检查 arr[i].name
indexOf
而不是 arr[i]
。代码应该像这样工作:
var arr : Array = [{name : "aa", id : "0"}, {name : "bb", id : "1"}, {name : "cc", id : "2"},{name : "ee", id : "0"}];
var arrTemp : Array = [{name : "aa", id : "0"}];
function decideWhichArray():void {
if(arr.length <= arrTemp.length){
var dif = arrTemp.length - arr.length;
for(var i=0;i< dif;i++){
var newObj:Object = new Object();
newObj.name = null;
newObj.id = null;
arr.push(newObj)
}
}
else{
var difAgain = arr.length - arrTemp.length;
for(var j=0;j< difAgain;j++){
var newObjSecond:Object = new Object();
newObjSecond.name = null;
newObjSecond.id = null;
arrTemp.push(newObjSecond)
}
}
checkResult(arr,arrTemp);
}
function checkResult(arr1,arr2):void {
for(var i:* in arr1)
{
if( arr1[i].name.indexOf( arr2[i].name ) > -1 )
{
trace(arr1[i].name);
}
}
}
decideWhichArray()
我有 2 个包含不同长度对象的数组
var arr : Array = [{name : "aa", id : "0"}, {name : "bb", id : "1"}, {name : "cc", id : "2"}];
var arrTemp : Array = [{name : "ee", id : "0"}, {name : "hh", id : "1"}, {name : "cc", id : "2"}, {name : "gg", id : "3"}];
现在不想用2个for循环遍历数组了。是否可以通过使用任何 属性 之类的 indexOf 或过滤器进行搜索。
目前我正在使用下面的代码,我猜这是不对的
for(var i:* in arr)
{
if( arr[i].indexOf( arrTemp[i].name ) > -1 )
{
trace(i)
}
}
我们将不胜感激。
提前致谢。
基本上你必须检查 arr[i].name
indexOf
而不是 arr[i]
。代码应该像这样工作:
var arr : Array = [{name : "aa", id : "0"}, {name : "bb", id : "1"}, {name : "cc", id : "2"},{name : "ee", id : "0"}];
var arrTemp : Array = [{name : "aa", id : "0"}];
function decideWhichArray():void {
if(arr.length <= arrTemp.length){
var dif = arrTemp.length - arr.length;
for(var i=0;i< dif;i++){
var newObj:Object = new Object();
newObj.name = null;
newObj.id = null;
arr.push(newObj)
}
}
else{
var difAgain = arr.length - arrTemp.length;
for(var j=0;j< difAgain;j++){
var newObjSecond:Object = new Object();
newObjSecond.name = null;
newObjSecond.id = null;
arrTemp.push(newObjSecond)
}
}
checkResult(arr,arrTemp);
}
function checkResult(arr1,arr2):void {
for(var i:* in arr1)
{
if( arr1[i].name.indexOf( arr2[i].name ) > -1 )
{
trace(arr1[i].name);
}
}
}
decideWhichArray()