问题描述
我在尝试从 Woocommerce webhook 中的对象列表中获取值时遇到问题。 Woocommerce 输入所选下拉列表的订单号(即,Royal Mail 在下拉列表中排在第 5 位,USPS 排在第 3 位)所以我需要能够在它是任何值时访问它。
var labelchoice = event.line_items[0].meta_data[1].value[0].label; // SUCCESS This returns "Custom"
var labelchoice1 = event.line_items[0].meta_data[1].value[0].value[0].value.5.value; // FAILED with "Unexpected Number"
var labelchoice2 = event.line_items[0].meta_data[1].value[0].value.value.5.value; // FAILED with "Unexpected Number"
var labelchoice3 = event.line_items[0].meta_data[1].value[0].value[0].value[0].5.value; // FAILED with "Unexpected Number"
var labelchoice4 = event.line_items[0].meta_data[1].value[0].value[0].value[0].5[0].value; // FAILED with "Unexpected Number"
引用的数字“5”是产品页面上下拉选项的编号(有 8 个选项,例如 USPS、Airmail 等)。 这里的问题是我不知道要选择什么数字(客户选择的下拉列表),因此“5”对象可能需要作为通配符引用,因为它可以是 1-8 中的任何数字。
谁能帮我抓住那个嵌套的“标签”值? - 在示例中显示为“皇家邮件”
"meta_data": [
{
"id": 166,
"key": "Dropdown options",
"value": "Custom"
},
{
"id": 167,
"key": "_WCPA_order_meta_data",
"value": [
{
"type": "select",
"name": "select-1549626172813",
"label": "Custom",
"value": {
"5": {
"i": 5,
"value": "UK-RM",
"label": "Royal Mail"
}
},
1楼
如果属性名称 ( 5
) 未知,可以查询:
var labelchoiceX = event.line_items[0].meta_data[1].value[0].value[
Object.keys(event.line_items[0].meta_data[1].value[0].value)[0]
].label;
2楼
您可以将索引作为字符串变量传递
const index = '5' // or any other value from the select dropdown
const labelchoice = event.line_items[0].meta_data[1].value[0].value[index].label
这是在行动: :
3楼
您正在使用[]
属性访问语法。
const m = new Map();
for (let i = 1; i <= 8; i++) {
m.set(i,
event.line_items[0].meta_data[1].value[0].value[String(i)].value /* or .label? */);
}
4楼
尝试这个。 我认为这是正确的顺序:
var labelchoice = event.line_items[0].meta_data[1].value[0].value.5.label;