当前位置: 代码迷 >> JavaScript >> 使用 Javascript 检索具有更改名称的嵌套对象的值
  详细解决方案

使用 Javascript 检索具有更改名称的嵌套对象的值

热度:70   发布时间:2023-06-13 12:27:34.0

我在尝试从 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"
            }
        },

如果属性名称 ( 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;

您可以将索引作为字符串变量传递

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

这是在行动: :

您正在使用[]属性访问语法。

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? */);
}

尝试这个。 我认为这是正确的顺序:

var labelchoice = event.line_items[0].meta_data[1].value[0].value.5.label;

  相关解决方案