Можно ли вернуть json_encode (), но в виде массива, а не объекта, поэтому я могу легко использовать методы `.filter ()` или `.forEach ()` - PullRequest
0 голосов
/ 04 апреля 2019

Я просто хочу убедиться, что такого нет ... потому что я не могу найти ничего, упоминающего это:

В настоящее время, когда я использую json_encode($array), я получаю объект json , который выглядит следующим образом:

{
    "1": {"user_id":1,"test":"","user_name":"potato0","isok":"true"},

    "2":{"user_id":2,"test":"","user_name":"potato1","isok":" true"},

    "3":{"user_id":3,"test":"","user_name":"potato2","isok":" true"},

    "4":{"user_id":4,"test":"","user_name":"potato3","isok":"locationd"}
}

и я хотел бы запустить методы .filter() / .forEach().

но они не будут работать на объектах ({...}) и будут работать на массивах ([...]).

Редактировать: похоже, я не уверен, что я получаю, так что это настоящий пример var_dump и json_encode ():

var_dump ($ массив);

array (size=2)
  'status' => boolean true
  'data' => 
    array (size=3)
      'fruits' => 
        array (size=9)
          'fruit_id' => int 246
          'fruit_name' => string 'banana' (length=15)
      'vegtables' => 
        array (size=9)
          'veg_id' => int 253
          'fruit_name' => string 'potato' (length=20)

echo json_encode (['status' => true, 'data' => $ fruits]);

{  
   "status":true,
   "data":{  
      "fruits":{  
         "fruit_id":246,
         "fruit_name":"banana"
      },
      "vegtables":{  
         "veg_id":253,
         "veg_name":"potato"
      }
   }
}

возвращаемый json определяется как «Объект» (проверяется с помощью typeof)

** Я не хочу превращать свой объект в массив на стороне js, я знаю об этом "трюке" и предпочитаю извлекать массив json из php в виде массива, пожалуйста, обратите внимание на мой вопрос **

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Вам нужно изменить основной объект на массив. Я думаю, что код ниже - это то, что вы ищете.

Ваш вклад:

 var data = {
    "1": {"user_id":1,"test":"","user_name":"potato0","isok":"true"},

    "2":{"user_id":2,"test":"","user_name":"potato1","isok":" true"},

    "3":{"user_id":3,"test":"","user_name":"potato2","isok":" true"},

    "4":{"user_id":4,"test":"","user_name":"potato3","isok":"locationd"}
};

Преобразовать объект в массив

 var result = Object.keys(data).map(function(key) {
  return data[key];
});

Теперь вы можете использовать фильтр для преобразованного массива

var filtered = result.filter(row => { return row.user_id > 1; });

И отфильтрованный результат:

[{
"user_id": 2,
"test": "",
"user_name": "potato1",
"isok": " true"
},{
"user_id": 3,
"test": "",
"user_name": "potato2",
"isok": " true"
},{
"user_id": 4,
"test": "",
"user_name": "potato3",
"isok": "locationd"
}]

Надеюсь, это то, что вы ищете, и здесь работает демонстрационная ссылка: https://playcode.io/282703?tabs=console&script.js&output

0 голосов
/ 04 апреля 2019

Вы можете использовать этот код для преобразования объекта объектов в массив.

Object.keys(response).map(element => response[element]);

, где ответ - ваш объект.

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