Как скопировать часть JSON? - PullRequest
0 голосов
/ 27 января 2019

Я получаю информацию из API github, но некоторые возвращаемые данные мне не нужны. Ниже приведен мой код для фильтрации данных JSON.Тем не менее, это слишком сложно, чтобы написать каждое поле.Есть ли более удобный способ написать это?

     result => {
    var obj2 = {

        items: []
    }

    function ObjectCreate(id, tags, score, link, title) {
        this.title = title
        this.link = link
        this.score = score
        this.id = id.toString();
        this.tags = tags;
    }

    var need = results.items
    for (var i = 0; i < results.items.length; i++) {

        var obj = new ObjectCreate(i, need[i].tags, need[i].score, need[i].link, need[i].title);
        obj2.items.push(obj);

    }
    let str = JSON.stringify(obj2, "", "\t")
}

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Вы можете использовать разрушающее назначение

let data = [{'id':120,'title': 'hello','link': '#', 'score': 24,'tags': 'tags blah blah','location': 'US','price': 120,},{'id':12,'title': 'hello wprld', 'link': '#','score': 125,'tags': 'tags blah blah', 'location': 'SO','price': 12,}
]

const format = data.map( ({id,link,title,score,tags}, index) => ({id:index,link,title,score,tags}))

console.log(format)
0 голосов
/ 27 января 2019

Немного короче:

 const format = ({ items }) => ({ 
    items: items.map((el, id) => ({ id, title: el.title, link: el.link, score: el.score, tags: el.tags }))
 });

Или используя некоторые вспомогательные функции:

const lens = (key, fn) => obj => ({ ...obj, [key]: fn(obj[key]) });
const pick = (...keys) => obj => Object.assign(...keys.map(k => ({ [k]: obj[k] })));
const map = (...fns) => arr => arr.map((el, i) => fns.reduce((el, fn) => fn(el, i), el));

const format = lens("items",
  map(
    pick("title", "link", "score", "tags"), 
    (el, index) => el.id = index
  )
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...