Javascript 如何过滤JSON.parse结果

Javascript 如何过滤JSON.parse结果,javascript,arrays,node.js,shopify,zapier,Javascript,Arrays,Node.js,Shopify,Zapier,我一直在尝试根据我的“note”值过滤API调用的结果。我一直在Zapier上构建它,调用也能正常工作,但我似乎找不到一种方法来让筛选函数完成它的工作(因此,如果我用返回结果替换第19-23行,那么它会给出api调用的所有命令)。我已经把我能找到的每个堆栈文档都翻了一遍,但它们都以错误result.filter not found,或bargle错误(Zapier中的一般错误)结束 const选项={ 网址:`https://mystorename.myshopify.com/admin/or

我一直在尝试根据我的“note”值过滤API调用的结果。我一直在Zapier上构建它,调用也能正常工作,但我似乎找不到一种方法来让筛选函数完成它的工作(因此,如果我用
返回结果
替换第19-23行,那么它会给出api调用的所有命令)。我已经把我能找到的每个堆栈文档都翻了一遍,但它们都以错误
result.filter not found
,或
bargle
错误(Zapier中的一般错误)结束

const选项={
网址:`https://mystorename.myshopify.com/admin/orders.json?`,
方法:“GET”,
标题:{
“内容类型”:“应用程序/json”,
“接受”:“应用程序/json”
},
参数:{
}
}
返回z.request(选项)
。然后((响应)=>{
response.throwForStatus();
var results=z.JSON.parse(response.content);
var queryItem=“555-5555”
const filteredOrders=results.orders.filter(item=>item.note==queryItem);
返回过滤器;

});您正在尝试对
结果进行筛选,但根据您的输出,您应该对
结果进行筛选。订单

const filteredOrders = results.orders.filter(item => item.note === queryItem);

您试图在对象中使用方法
filter
,但filter仅在数组中可用,因此您应该尝试在orders数组中调用
filter

let results = {
  "orders": [
     {
      "note": "555-5555",
      "subtotal_price": "1.00"
     },
     {
      "note": "555-6666",
      "subtotal_price": "2.00"
     } 
  ]
}

let queryItem = "555-5555";

let newArray = results.orders.filter(function (item) {
  return item.note == queryItem
})

console.log(newArray)
更新为包含真正的http调用:

const url = 'http://www.mocky.io/v2/5d9466142f000058008ff6b7'

const options = {
    method: 'GET',
    headers: {
      'Content-Type': 'application/json',
      'Accept': 'application/json'
    },
}

const response = await fetch(url, options)
const results = await response.json()

const queryItem = "555-5555"
const filteredOrders = results.orders.filter(item => item.note === queryItem)

console.log(filteredOrders)

您是否正在取回所有订单(具有指定筛选值的所有订单)

我意识到我没有收回所有订单,这就成功了:

`https://mystorename.myshopify.com/admin/orders.json?status=any`
或者,您可以查询带有该特定注释的订单:

`https://mystorename.myshopify.com/admin/orders.json?status=any&note=` + queryItem

尝试
results.orders.filter
No joy,它返回一个未定义的值。Double检查了我的输出,它与我发布的一样,但要获得每个项目,我必须输入
返回结果。订单[0]
返回结果。订单[1]。我确实忘记了
结果。订单
部分。我试过你的答案,但还是无法过滤。我把它添加到了我原来的问题中(也许我实现错了?),但如果我改为
let results=z.JSON.parse(response.content)如果失败。这是否与JSON.parse有关,导致了需要更改的问题?@littlecoder我不熟悉shopify或zappier,我不知道那是什么。但是我用一个真正的http调用更新了响应,并且它可以正常工作。希望有帮助。这是奇怪的事情,你的两个答案都“有效”,但在zapier中由于某种原因不起作用。我现在有一张他们支持的票。我认为
z
是他们如何处理对象的:“……作为应用程序中所有函数调用的第一个参数提供。”但文档中没有提到我找到的z.filter。我实际上是从这个开始的,并意识到
note=queryItem
提取所有订单,而不仅仅是具有唯一注释的订单。您是否以未提及的特定方式设置了
queryItem
部分的格式?啊,看来shopify端的Orders API可能存在问题。根据文档,这不起作用。您可能需要尝试以下几点:(1)确保您的端点包含
状态=任意&限制=250
(2)您的api对订单具有完全访问权限/范围-
读取所有订单
读取订单,写入订单