我在Windows 10上,并且使用node.js,并且使用node-jq@1.10.0(目前是最新版本)
我想使用jq从JSON检索一些信息。所以我使用带有'json'作为选项参数的jq.run函数。但这给我带来了一个错误,我知道我的查询很好,并且我的所有代码都可以运行,而无需以“ let AllKOMoves = ... ” 开头的行。
我的JSON格式正确,我在JMES Path中尝试了该程序,并且运行良好,因此JSON没有问题。我做了一些研究,有人说我的操作系统不能支持太长的请求。我想精确指出JSON上的权重为6Mo。
我在互联网上做过一些研究,其中一些谈论在此网站上的“ 未指定.catch(…) ”:这里和这个谈论过长的查询:这里
这是我const jq = require('node-jq');退出异步功能的代码。
(async ()=>{
let name = "abomasnow";
const fileContent = fs.readFileSync(`./Pokemon with move CSV/Queries/nonStatusMove/${name}nonStatusMove.csv`);
let pokemonSubject = JSON.parse(await jq.run(`. | map(select(.name == "${name}"))[0]`, './nameBSTypeAbilityWeight.json'));
var allMoves = moveToJSON(fileContent);
let AllKOMoves = await jq.run(`. | map(select(.Moves | map(select(.Max == 100)) | length > 1)) | map({Nature: .Nature, EV: .EV, Moves: [.Moves | map(select(.Max == 100))[] | .Move], …Run Code Online (Sandbox Code Playgroud) 我有这个数组
[[1,2,3],[4,1,6],[1,3,2],[1,2,4],[3,1,2],[4,6,1],[9,9,9]]
我想要一个执行此操作的函数:
[[1,2,3],[4,1,6],[1,2,4],[9,9,9]].
此函数删除所有具有相同值的子数组。
我想过这样的过滤器
.filter(el => el.filter(value => array2.includes(value)))
但我不认为它会奏效。
PS:我使用 node.js
编辑:奇怪的是,您的许多答案都与示例完美配合,但在我真正的程序中不起作用......事实上,我使用对象而不是数字。像这样:[[obj,obj,obj],[obj,obj,obj],[obj,obj,obj]]。但我不知道为什么它可以使用数字而不是对象...
EDIT2:我现在给出最小的例子,这个对象:
注意实际数组可以有 20,000 个项目
[
[
{ name: 'Dofawa', item_type: 'Dofus', level: 6 },
{
name: 'Dofus Cawotte',
item_type: 'Dofus',
level: 6
},
{
name: 'Dofus Kaliptus',
item_type: 'Dofus',
level: 6
}
],
[
{ name: 'Dofawa', item_type: 'Dofus', level: 6 },
{
name: 'Dofus Emeraude',
item_type: 'Dofus',
level: 6
},
{
name: 'Dofus Ocre',
item_type: 'Dofus',
level: 6
}
],
[ …Run Code Online (Sandbox Code Playgroud) JSON 有很多查询语言,例如 JMES Path 和 JSON Path,但我发现的没有一个让我感兴趣,例如 JSON Path 不允许多选查询(我无法返回具有不同类型元素的列表 [汽车、飞机、船])和 JMES 路径与 JSON 路径相比确实更简单,并且允许多选,但不允许访问父节点,例如 .. 或parent(@) 或 $(对于源)。所以我想要一种可以同时完成这两个任务的语言,如果可能有一种像 JMES Path 这样简单的查询语言,但如果只有一种并且是最困难的一种,那没关系,我会接受它!
PS:我用javascript工作!
我在javascript中使用数组进行了很多工作,并且我坚持使用该函数,.find()因为它只返回第一次出现,如果有很多,我想要一个所有出现的数组。
这是我的代码:
const condition = [
{
info_perso: 'Alignement',
symbole: '=',
info_perso_value: 'Mercenaire'
},
{
info_perso: 'Alignement',
symbole: '=',
info_perso_value: 'Bonta'
},
{ info_perso: 'Grade', symbole: '>', info_perso_value: '2' }
]
console.log(condition.find(el => el.info_perso == 'Alignement'));Run Code Online (Sandbox Code Playgroud)
我想要一个带有第一个和第二个元素的数组。是否有任何内置功能.find()可以用来解决我的问题?如果没有内置函数,您是否可以给我一些提示来构建一个允许我这样做的函数(该函数将被调用.findAll())?
PS:我使用 node.js