Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法通过多个键访问数组元素?_Javascript_Php_Json - Fatal编程技术网

Javascript 有没有办法通过多个键访问数组元素?

Javascript 有没有办法通过多个键访问数组元素?,javascript,php,json,Javascript,Php,Json,我试图在php中将一些数据存储在一个关联数组中,以便以后在javascript中访问。我希望以一种可以通过多种方式访问数据的方式来处理数据,比如通过名称和类型 //e.g. in cpp i would do struct SortedFruits{ std::unordered_map<std::string, Fruits> byName; std::unordered_map<std::string, std::unordered_map<std::stri

我试图在php中将一些数据存储在一个关联数组中,以便以后在javascript中访问。我希望以一种可以通过多种方式访问数据的方式来处理数据,比如通过名称和类型

//e.g. in cpp i would do
struct SortedFruits{
  std::unordered_map<std::string, Fruits> byName;
  std::unordered_map<std::string, std::unordered_map<std::string, Fruits&>> byType;
}
SortedFruit fruit();
//then add them like
fruit.byName["apple"] = new Apple();
fruit.byType["red"]["apple"] = &fruit.byName["apple"];
//例如,在cpp中,我会这样做
结构分类结果{
std::无序地图名称;
std::按类型排列的无序地图;
}
分类水果();
//然后像这样添加它们
水果。别名[“苹果”]=新苹果();
水果。按类型[“红色”][“苹果”]=&水果。按名称[“苹果”];
我基本上只想要水果。按类型['red']['apple']==水果。按名称['apple']某种方式。理想情况下,我希望这是在php中完成的,这样我就可以将其存储在某个位置,而不必重新计算,但是如果引用/指针无法在json中保存,我也很乐意使用javascript进行排序


我可以问一下这样做的最佳方式是什么吗?

我认为用php格式化数据,让js稍后从json解析不是最好的方式。 基本上,您的对象有两个属性
名称
颜色
。我只需要用
Fruit
数组对json进行编码,并在js中以我想要的方式映射这些对象。 我不认为映射对象是服务器的责任,它的责任是向客户机提供数据

编辑(回应评论) 在JS中,我甚至不会将它们存储在多个地图中

const fruits = [
    {color: 'red', name: 'apple'},
    {color: 'red', name: 'strawberry'},
    {color: 'yellow', name: 'banana'}
];

const redOnes = fruits.filter(fruit => fruit.color === 'red');
// will return [{color: 'red', name: 'apple'}, {color: 'red', name: 'strawberry'}]

const apple = fruits.find(fruit => fruit.name === 'apple');
// will return {color: 'red', name: 'apple'}

最好只返回一个具有相关属性的对象列表,然后在JS中可以找到搜索它们的方法。@ADyson我可以问一下为什么吗?还有,我应该如何在JS中搜索它们?因为否则,您必须将相同的数据放在JSON中不同索引下的多个位置。这太乱了。很确定你已经可以在JavaScript中找到搜索/过滤/索引代码,它可以搜索一系列对象——在线搜索。我只是觉得这样做服务器端会让页面更快,因为处理后的列表可以存储在文件或缓存中?不管怎样,有没有一种方法可以在js中对它们进行排序而不需要存储重复项呢?我编辑了我的anwser