Underscorejs对象集合

时间:2018-04-02 12:29:50

标签: javascript arrays algorithm underscore.js

只是存在一个underscoreJs方法来将具有某些属性的Object转换为具有键属性的对象集合?

我的意思是如果在 underscorejs 中存在一个简单的方法,它就等同于:

function objectToCollection(obj, propertyKey) {
    return _.map(obj, function(o, key) {
        b[propertyKey] = key;
        return o;
    });
}

var obj = {
    prop1: {val:2},
    prop2: {val:3},
    prop3: {val:5},
    prop4: {val:7}
};

objectToCollection(obj, 'name');

结果:

[
    {name: 'prop1', val: 2},
    {name: 'prop2', val: 3},
    {name: 'prop3', val: 5},
    {name: 'prop4', val: 7}
]

2 个答案:

答案 0 :(得分:2)

您可以使用import networkx as nx import os import pandas as pd data=pd.read_excel('f-e-2016-intermediate-use.xlsx') G=nx.DiGraph() teams=data.groupby(['reportercode','partnercode']) team_names=[name for name,group in teams] G.add_edges_from(team_names) a_node=data.groupby(['reportercode']) source_nodes=[name for name,group in a_node] b_node=data.groupby(['partnercode']) target_nodes=[name for name,group in b_node] nodes=set(source_nodes+target_nodes) G.add_nodes_from(nodes) page_rank=nx.pagerank(G,weight='tradevalueus') Object.keys

map

<强>演示

var output = Object.keys(obj).map( s => ({...obj[s], name:s}) )

答案 1 :(得分:0)

由于underscore's映射(甚至所有适用于集合的方法)都可以直接在Object上运行,因此这种转换不需要那里的额外功能。

_.map(obj)只会将对象的所有值转换为集合

以下是您的特定情况(转换)的示例,您想在其中使用属性name保存每个对象内的键:

var obj = {
    prop1: {val:2},
    prop2: {val:3},
    prop3: {val:5},
    prop4: {val:7}
}
var array = _.map(obj, (v, name) => ({...v, name}));

console.log(array)
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>