最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

jquery - use JavaScript map reduce to remove items from an array - Stack Overflow

programmeradmin3浏览0评论

I have a JavaScript example with map reduce to remove items from an array, after transforming them. Is there a simpler method to achieve this as it seems a bit plicated

I put it in a JSFiddle here and here is the map reduce part:

var after = before.map(function (item) {
    if (item.keep) {
        return {
            z: item.a
        };
    } else {
        return undefined;
    }
}).reduce(function (prev, item) {
    if (item) {
        if ($.isArray(prev)) {
            prev.push(item);
            return prev;
        } else if (prev) {
            return [prev, item];
        } else {
            return [item];
        }
    } else {
        if ($.isArray(prev)) {
            return prev;
        } else if (prev) {
            return [prev];
        } else {
            return prev;
        }

    }
});

I have a JavaScript example with map reduce to remove items from an array, after transforming them. Is there a simpler method to achieve this as it seems a bit plicated

I put it in a JSFiddle here and here is the map reduce part:

var after = before.map(function (item) {
    if (item.keep) {
        return {
            z: item.a
        };
    } else {
        return undefined;
    }
}).reduce(function (prev, item) {
    if (item) {
        if ($.isArray(prev)) {
            prev.push(item);
            return prev;
        } else if (prev) {
            return [prev, item];
        } else {
            return [item];
        }
    } else {
        if ($.isArray(prev)) {
            return prev;
        } else if (prev) {
            return [prev];
        } else {
            return prev;
        }

    }
});
Share Improve this question edited Nov 30, 2015 at 18:00 Giao1968 26k11 gold badges76 silver badges105 bronze badges asked Nov 19, 2013 at 23:50 KeepCalmAndCarryOnKeepCalmAndCarryOn 9,0752 gold badges34 silver badges50 bronze badges 1
  • Maybe try the splice method. – milestyle Commented Nov 19, 2013 at 23:57
Add a ment  | 

1 Answer 1

Reset to default 7

You mean .filter?

var after = before.filter(function (item) {
   return item.keep;
});

Then you can still .map it if you want/need to.

发布评论

评论列表(0)

  1. 暂无评论