分享
三行代码  ›  专栏  ›  技术社区  ›  meallhour

如何从地图中排除关键点并只显示值?

  •  0
  • meallhour  · 技术社区  · 1 周前

    Object obj 具体如下:

    const obj = {
             Hostname: "abc"
             id: 189883
             message: "error message"
             name: "script name"
    };
    
    1. 我想排除钥匙 Hostname 它的价值。
    2. values keys 结果如下: 189883:error message:script name

    string . 我写了下面的代码,但是它为每个字母创建数组元素

            const resultObj = Object.values(vascoResponse.rows[0]obj)
                .map((row) => Object
                    .values(row)
                    .filter(val => val)
                );
    
    5 回复  |  直到 1 周前
        1
  •  1
  •   Sven.hig    1 周前

    Object.values()

    const objec = {
      Hostname: "abc",
      id: 189883,
      message: "error message",
      name: "script name"
    };
    res = Object.values(objec).filter((o,i) => o != "abc" ).join(":")
    console.log(res)
        2
  •  2
  •   Nick Parsons    1 周前

    您可以获取对象的条目以获取 [[key, value], [key2, value2], ...] .filter() 在它上面用一个 "Hostname" . 最后,您可以将每个内部数组映射到其值并使用 .join(":") 要获取字符串:

    const obj = {
       Hostname: "abc",
       id: 189883,
       message: "error message",
       name: "script name"
    };
    
    const res = Object.entries(obj)
                 .filter(([key]) => key !== "Hostname")
                 .map(([,v]) => v).join(":");
    
    console.log(res);

    如果需要将此功能提取到函数中,可以对object参数进行分解,以获取除 Hostname ,然后获取并连接基于该值的值:

    const obj = {
       Hostname: "abc",
       id: 189883,
       message: "error message",
       name: "script name"
    };
    
    const getString = ({Hostname, ...r}) => Object.values(r).join(':');
    console.log(getString(obj));
        3
  •  1
  •   cars10m    1 周前

    const obj = {
         Hostname: "abc",
         id: 189883,
         message: "error message",
         name: "script name"
    };
    
    let str=Object.entries(obj)
     .filter(([k])=>k!=="Hostname")
     .map(([k,v])=>v).join(":");
    console.log(str)
        4
  •  1
  •   Zachary Fejes    1 周前

    所以我知道你会怎么做,但我个人会避免 Object.values() 总而言之。在决定如何处理数组时,我通常会问以下问题:

    • 是否要基于键从对象中提取值的子集?->使用 Object.keys() 过滤
    • 对象值()
    • 我想把一个数组变成另一个长度相等的数组吗?->使用 array.map()
    • 我想把一个数组变成一个更短的数组吗?->使用 array.filter()
    • array.reduce()

    对象.keys() , 数组.filter() 数组.reduce()

    let obj = {
       Hostname: "abc",
       id: 189883,
       message: "error message",
       name: "script name"
    };
    
    let resultString = Object.keys(obj) //gets an array of keys from the object
      .filter(key => key != "Hostname") //removes 'Hostname' from the array
      .reduce((accumulator, key) => 
        accumulator == "" ? accumulator + obj[key] : accumulator + ":" + obj[key],
       "");
    
    console.log(resultString);

    如果你运行这个代码片段,你会发现它输出的字符串与你每次期望的完全一样。reducer中的三元运算符只是在每个新值之前添加“:”冒号字符的一种方式,除非它是第一个值。

        5
  •  0
  •   NeK    1 周前

    你可以用 delete Object.values

    delete obj["Hostname"];
    Object.values(obj).join(":");