Однострочник JavaScript для сбора значений из графа объектов? - PullRequest
0 голосов
/ 01 мая 2010

Учитывая следующий граф объекта:

{
"children": [
    {
        "child": {
            "pets": [
                {
                    "pet": {
                        "name": "fido"
                    }
                },
                {
                    "pet": {
                        "name": "fluffy"
                    }
                }
            ]
        }
    },
    {
        "child": {
            "pets": [
                {
                    "pet": {
                        "name": "spike"
                    }
                }
            ]
        }
    }
]

}

Какая была бы хорошая однострочник (или две), чтобы собирать имена домашних животных моих внуков? Результат должен быть [«fido», «пушистый», «шип»]

Я не хочу писать собственные методы для этого ... Я ищу что-то вроде того, как jQuery работает при выборе dom-узлов, где вы можете просто указать ему путь в стиле CSS, и он собирает их для вы.

Я ожидаю, что путь выражения будет выглядеть примерно так: "дети ребенок домашние животные зовут"

Ответы [ 3 ]

2 голосов
/ 01 мая 2010

LINQ to JavaScript (JSLINQ) - это реализация LINQ to Objects, реализованная в JavaScript. Он построен с использованием набора методов расширения, созданных поверх объекта Array JavaScript. Если вы используете массив, вы можете использовать LINQ to JavaScript.

LINQ to JavaScript является проектом с открытым исходным кодом, и вы можете скачать его здесь: http://jslinq.codeplex.com/

Надеюсь, это поможет ...

S

1 голос
/ 01 мая 2010

Если вы не хотите использовать библиотеку, это самый краткий способ, которым я мог бы написать ее.

var Ar=[];
p.children.map(function(a){a.child.pets.map(function(a){Ar.push(a.pet.name)})});
0 голосов
/ 01 мая 2010

Я остановился на библиотеке JSONPath , которая похожа на XPath для JSON. LINQ показался мне немного тяжелым, что привело к более подробному синтаксису, хотя и выглядело более мощным. Возможно, если мои потребности изменятся, я обновлюсь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...