Javascript 如何获取对象中的第一个和最后一个属性?

Javascript 如何获取对象中的第一个和最后一个属性?,javascript,object,Javascript,Object,我使用的对象与以下类似(尽管此对象有4个键/值对,但我的实际对象可以有任意数量的键/值对): 我试图将键和值添加到单个字符串中,以“:”和“|”分隔,如下所示: var myString = 'action:open|card:Comment card name|id:54AEF364|url:www.myurl.com' 我正在尝试使用for…in循环执行此操作: for (var i in myObj) { var myString += i + ':' + myObj[i] + '|

我使用的对象与以下类似(尽管此对象有4个键/值对,但我的实际对象可以有任意数量的键/值对):

我试图将键和值添加到单个字符串中,以“:”和“|”分隔,如下所示:

var myString = 'action:open|card:Comment card name|id:54AEF364|url:www.myurl.com'
我正在尝试使用for…in循环执行此操作:

for (var i in myObj) {
  var myString += i + ':' + myObj[i] + '|';
}
我能得到我所需要的大部分,但有两个例外:

  • “undefined”出现在第一个属性名称之前
  • 对于最后一个键/值对,在最终值之后不应该有“|”,因为这是字符串的结尾

  • 如何实现这一点?

    使用映射和数组联接:

    const myObj = {
      action: 'open',
      card: 'Comment card name',
      id: '54AEF364',
      url: 'www.myurl.com'
    };
    
    const myObjSerialized = Object.keys(myObj).map(key => `${key}:${myObj[key]}`).join('|');
    console.log(myObjSerialized);
    

    使用映射和数组联接:

    const myObj = {
      action: 'open',
      card: 'Comment card name',
      id: '54AEF364',
      url: 'www.myurl.com'
    };
    
    const myObjSerialized = Object.keys(myObj).map(key => `${key}:${myObj[key]}`).join('|');
    console.log(myObjSerialized);
    

    您可以始终使用可靠的ol标准
    for
    循环并迭代对象的键

    var myObj={
    行动:"开放",,
    卡片:'注释卡片名称',
    id:'54AEF364',
    网址:“www.myurl.com”
    };
    var serialize=函数(数据){
    var keys=Object.keys(数据),string=“”;
    对于(var k=0;k0)字符串+='|';
    字符串+=键[k]+':'+数据[k]];
    }
    返回字符串;
    }
    
    log(序列化(myObj))
    您可以始终使用可靠的标准
    for
    循环并迭代对象的键

    var myObj={
    行动:"开放",,
    卡片:'注释卡片名称',
    id:'54AEF364',
    网址:“www.myurl.com”
    };
    var serialize=函数(数据){
    var keys=Object.keys(数据),string=“”;
    对于(var k=0;k0)字符串+='|';
    字符串+=键[k]+':'+数据[k]];
    }
    返回字符串;
    }
    
    log(序列化(myObj))未定义与变量
    myString
    相关。在for循环中使用变量之前,必须声明该变量:

    var myObj={
    行动:"开放",,
    卡片:'注释卡片名称',
    id:'54AEF364',
    网址:“www.myurl.com”
    };
    var myString=“”;
    用于(myObj中的var i){
    myString+=i+':'+myObj[i]+'|';
    }
    
    log(myString)未定义与变量
    myString
    相关。在for循环中使用变量之前,必须声明该变量:

    var myObj={
    行动:"开放",,
    卡片:'注释卡片名称',
    id:'54AEF364',
    网址:“www.myurl.com”
    };
    var myString=“”;
    用于(myObj中的var i){
    myString+=i+':'+myObj[i]+'|';
    }
    
    log(myString)订单重要吗?从myString中删除最后一个字符。如果顺序很重要,请注意,在技术上未指定属性键顺序(即,不保证以任何顺序)。但是,除了解析为数字的键之外,大多数浏览器都将保留键顺序。@JochenBedersdorfer要使用该注释,OP应该阅读以下答案:。这个问题根本上是有缺陷的。没有“first”或“last”属性。顺序重要吗?从myString中删除最后一个字符。如果顺序很重要,请注意,在技术上未指定属性键顺序(即,不保证以任何顺序)。但是,除了解析为数字的键之外,大多数浏览器都将保留键顺序。@JochenBedersdorfer要使用该注释,OP应该阅读以下答案:。这个问题根本上是有缺陷的。不存在“第一”或“最后”属性。我正在尝试更多地理解地图。如果myObj[key]为null或未定义,您不会遇到错误吗?Hi-Ammar map只是在数组上迭代,对象总是有键,如果某个键有null值,那么我输入的代码将转换为字符串(因为javascript模板)。若我们需要知道值是空的还是未定义的,那个么我们可以先过滤,然后使用map。我刚刚测试了它,你们是对的。我认为这是@ ASW1984应该考虑的一个例子。谢谢。我想多了解一些地图。如果myObj[key]为null或未定义,您不会遇到错误吗?Hi-Ammar map只是在数组上迭代,对象总是有键,如果某个键有null值,那么我输入的代码将转换为字符串(因为javascript模板)。若我们需要知道值是空的还是未定义的,那个么我们可以先过滤,然后使用map。我刚刚测试了它,你们是对的。我认为这是@ ASW1984应该考虑的一个例子。谢谢