0

だから、私は配列を持っていて、それをいくつかの条件に対して実行してから更新する必要があったので、次のようなことをしました:

 var newitems = myArray.filter(function(x,n){
     return someconditional_is_true;
 }).map(function(arg){
     return "something_new" + arg;
 })

それは魅力のように機能しました..しかし、「myArray」をリスト(ハッシュ)に変更し、そのリストをフィルタリングしてから配列を生成する必要がありましたが、実際には機能していません。

 // NOT working
 var newitems = jQuery.each(myHash, function(x,n){
      if (some_conditional) {
          return 'something_new' + 'n';
      }
 })

最後の newitems は、「戻り値」ではなく、ループされたスルー値を保持するだけです。「.map」を試しました - 運が悪いです。ここで何か些細なことを見落としていると確信しています。

では、例として。

var myHash = {
    item1 : 'item1value',
    item2 : 'item2value',
    blah : 'item3value'
}


var newitems = jQuery.each(myHash, function(x,n){
    if (x.indexOf('item') != -1){
        return 'myVALUE' + "--" + n;
    }
})

console.log(newitems); // gives me just the myHash in a hash view.


// this just gives me newitems in an array with ALL of myhash stringed. It didn't filter by the conditional.
var newitems = jQuery.map(myHash, function(x,n){
    if (x.indexOf('item') != -1){
       return 'myVALUE' + "--" + n;
    }
})

結局のところ、「newitems」には次のものがあると思います。

['myValueitem1',',myValueitem2']
4

1 に答える 1

2

それぞれが配列を構築するために戻り値を尊重するつもりはありません。使用jQuery.map:

var newItems = jQuery.map(myHash, function(value,key){
    if (key.indexOf('item') != -1){
        return 'myVALUE' + "--" + value;
    }
});
于 2013-11-07T01:46:39.070 に答える