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 回答