#javascript #php #ecmascript-6
#javascript #php #ecmascript-6
Вопрос:
Я просто хочу убедиться, что такой вещи нет… потому что я не могу найти ничего, что упоминало бы об этом:
В настоящее время, когда я использую 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);
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 в виде массива, пожалуйста, сосредоточьтесь на моем вопросе **
Комментарии:
1. Ваш
$array
выглядит 1-индексированным , а не 0-индексированным , не знаю PHP, но это не выглядит многообещающим2.
Object.values(.....)
3. @Snow Не могли бы вы объяснить более кратко?
4. Пожалуйста, добавьте php-скрипт
5. @wellhellothere : тогда вам нужно создать массив вместо объекта
Ответ №1:
Вам нужно изменить основной объект на массив. Я думаю, что приведенный ниже код — это то, что вы ищете.
Ваш ввод :
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];
});
Теперь вы можете использовать Filter для преобразованного массива
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=consoleamp;script.jsamp;output