jquery将哈希映射到过滤的子集

时间:2013-11-07 01:36:48

标签: jquery

所以,我有一个数组,我需要针对某些条件运行,然后更新它,所以我做了类似的事情:

 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']

1 个答案:

答案 0 :(得分:2)

每个人都不会遵守构建数组的返回值。使用jQuery.map

var newItems = jQuery.map(myHash, function(value,key){
    if (key.indexOf('item') != -1){
        return 'myVALUE' + "--" + value;
    }
});