充分利用Javascript对象CSV值 [英] Getting CSV values from Javascript object

查看:148
本文介绍了充分利用Javascript对象CSV值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想Javascript对象转换为CSV并将其存储在一个文件..
我有一个演示: http://jsbin.com/atewix/8/edit

I am trying to convert Javascript object to CSV and store it in to a file.. I have a demo: http://jsbin.com/atewix/8/edit

我想要做的就是如果我给实体值时间或新闻报内部功能 findProps()

What I want to do is If I give the entity values "Time" or "News" inside function findProps(),

应该格式返回CSV:

"http://www.testingmyurl.com", Time, Dec 9, 2012

"http://www.testingmyurl.com",News, Germany,Election
"http://www.testingmyurl.com",News,Egypt, Revolution

与目前的格式只返回个人价值,而且也为 [目标,对象]

{
"_index": "test",
"_source": {
     "link": "http://www.testingmyurl.com",
  "Categories": {
      "Types": {
          "Events": [{
              "count": 1,
              "entity": "Time",
              "Time": [{
                  "entity": "Dec 9",
                  "Dec_9": [{
                      "count": 1,
                      "entity": "2012"
                  }]
                  }]
              }]}}}}

这能翻在地平面结构?

Can this be turned in to a flat structure?

推荐答案

这是一个pretty深层结构,但是这个功能将与您的数据工作原样。在 fixSpace()函数占 12月9日 Dec_9

That's a pretty deep structure, but this function will work with your data as-is. The fixSpace() function accounts for the discrepancy between Dec 9 and Dec_9.

演示: http://jsfiddle.net/ThinkingStiff/r2kje/

News:
"http://www.testingmyurl.com","News","Germany","Election"
"http://www.testingmyurl.com","News","Egypt","Revolution"
Time:
"http://www.testingmyurl.com","Time","Dec 9","2012"

脚本:

function findProps( name, data ) {
    var results = [],
        events = data._source.Categories.Types.Events,
        link = data._source.link;

    for( var eventIndex = 0; eventIndex < events.length; eventIndex++ ) {
        var event = events[eventIndex];
        if( event.entity == name && event[name]  ) {
            for( var entityIndex = 0; entityIndex < event[name].length; entityIndex++ ) {
                var entity = event[name][entityIndex],
                    entityName = fixSpace( entity.entity );
                if( entity[entityName] ) {
                    for( var valueIndex = 0; valueIndex < entity[entityName].length; valueIndex++ ) {
                        var value = entity[entityName][valueIndex];
                        results.push( 
                              '"' + link + '",'
                            + '"' + name + '",'
                            + '"' + entity.entity + '",' //un-fixSpaced name
                            + '"' + value.entity + '"'
                        );
                    };
                };
            };
        };
    };

    return results;
};

function fixSpace( value ) {
    return value.replace( ' ', '_' );        
};

var news = findProps( "News", data );
document.getElementById( 'news' ).innerHTML = news.join( '<br />' );
var times = findProps( "Time", data );
document.getElementById( 'time' ).innerHTML = times.join( '<br />' );

HTML

News:
<div id="news"></div>
Time:
<div id="time"></div>

这篇关于充分利用Javascript对象CSV值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆