парсинг многомерного массива php в многомерный массив javascript

Я не хочу, чтобы это решение помогло вам или нет. Когда мы пишем тестовый пример, особенно тест для функций, мы склонны тестировать входное и выходное значение для функции. И для меня, я думаю, мы не должны касаться примитивной функции Array, Object, вызывая jasmine mock. Если вы хотите знать, правильно ли работает ваша функция в этом случае. Например:

describe('$scope.filterData', function() { 
    //params
    var data = {
        key1: "value1",
        key2: "value2",
        key3: "value3"
    }
    var allowedKeys = ["key1", "key2"];

    it('should return 2 key', function() {            
        var expected = {
          key1: "value1",
          key2: "value2",
        }

        var value = $scope.filterData(data, allowedKeys);
        expect(JSON.stringify(value)).toEqual(JSON.stringify());
    });
});

Конечно, нам иногда приходится иногда издеваться над некоторыми функциями, например, когда у нас есть HTTP-запрос, и мы должны ждать, или у нас есть функция из других мест для использования и хотим их издеваться. Но в этом случае ваша функция не нужна для expect некоторой функции to be called, ее просто достаточно и не зависит от чего-либо еще. Поэтому лучше всего сосредоточиться на входных и выходных значениях функции

0
задан Hongarc 19 January 2019 в 07:22
поделиться

1 ответ

Один из способов сделать это - определить нужные ключи (значения не имеют значения).

$keys = ['grey' => 1, 'blue' => 1, 'yellow' => 1];

Затем используйте array_intersect_key в каждой строке, чтобы получить свой результат.

foreach ($array as $row) {
    $result[] = array_values(array_intersect_key($row, $keys));
}

array_values здесь необходимо, потому что если у вас все еще есть строковые ключи, результатом json_encode будет массив объектов, а не массив массивов.

0
ответ дан Don't Panic 19 January 2019 в 07:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: