2015-06-25 31 views
1

對象使用LoDash一個對象映射過來:不包括在地圖中的JavaScript

_.map(items, (item) = > { 
    if (Array.isArray(item)) { 
     // don't include this in final object 
    } 
    return _.assign({ 
     foo: "bar" 
    }, item); 
}); 

想知道我的最好的策略是不包括在返回的,映射對象的對象,如果當前對象數組?

回答

1

您可以使用reduce這完全適用於您的情況:

var items = [{a: 1}, ["asd"], {b: 2}]; 

var result = _.reduce(items, (res, item) => { 
    if (!Array.isArray(item)) { 
     _.assign(res, item); 
    } 
    return res; 
}, {foo: "bar"}); 

jsbin

+0

這很好,我喜歡這個。 – benhowdle89

0

這...只是分配一個空對象,如果項目是一個數組,以其他方式轉讓項目:

_.map(items, (item) = > { 
    return _.assign({ 
     foo: "bar" 
    }, Array.isArray(item)?{}:item); 
}); 

這裏有沒有新的匿名函數的語法有點小提琴:https://jsfiddle.net/xurm6vrr/1/

+0

是真的,但不是數組將保留在映射對象中的項嗎? – benhowdle89

+0

@Robert我認爲這只是避免設置'foo'屬性,該項目不會在'map'的輸出中刪除。 – Halcyon

+0

@Halcyon,我誤讀了!修正它,我想。 –

0

我期望一個map函數始終輸出與輸入相同的密鑰。這些值可能會修改,但密鑰保持不變。

還有其他功能可以用來更改一組項目,如filter或某種aggregatereduce