Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据给定的键更改javascript对象中元素的顺序_Javascript_Arrays_Angular_Object_Ionic Framework - Fatal编程技术网

根据给定的键更改javascript对象中元素的顺序

根据给定的键更改javascript对象中元素的顺序,javascript,arrays,angular,object,ionic-framework,Javascript,Arrays,Angular,Object,Ionic Framework,我试图通过给定的键更改javascript中对象的顺序。这是我的代码,但它说移位不是一个函数。它是否不适用于对象?请给出一个解决方案 periods = { "Su": 6, "Mo": 10, "Ma": 7, "Ra": 18, "Ju": 16, "Sa": 19, "Me": 17, "Ke": 7, "Ve": 20, }; rotateOrder(key

我试图通过给定的键更改javascript中对象的顺序。这是我的代码,但它说移位不是一个函数。它是否不适用于对象?请给出一个解决方案

    periods = {
      "Su": 6,
      "Mo": 10,
      "Ma": 7,
      "Ra": 18,
      "Ju": 16,
      "Sa": 19,
      "Me": 17,
      "Ke": 7,
      "Ve": 20,
    };
    rotateOrder(key:any, entities:any) {
            let result = entities;
            for(var k in entities) {
              if(entities.hasOwnProperty(k) && k != key){
                result.push(result.shift());
              }
              else {
                return result;
              }
            }
          }
console.log(this.rotateOrder("Ve", this.periods));

我们可以使用object.entries和sort函数重新排列/更改数组:

代码:

设周期={ 苏:6,, 莫:10,, 马:7,, Ra:18, 朱:16,, Sa:19, 我:17, 柯:7,, Ve:20, }; 让KeySorted=Object.entriesperiods.sortfunction a,b{ 返回a[1]-b[1] } console.logkeysorded 可以使用Object.entries将对象转换为数组,然后使用.slice和.concat,最后使用Object.fromEntries返回对象

在下面的示例中,我还使用Object.keys和.indexOf来查找key的索引,但还有其他解决方案

设周期={ 苏:6,, 莫:10,, 马:7,, Ra:18, 朱:16,, Sa:19, 我:17, 柯:7,, Ve:20, }; 函数旋转或旋转,obj{ 让idx=Object.keysobj.indexOfkey//查找键的索引 让arr=Object.entriesobj//将对象转换为数组 让newObj=Object.fromEntries//这将重新创建对象 arr.sliceidx//获取数组的结束部分,从键开始 .concatarr.slice0,idx//连接开头 返回newObj }
控制台。LogRoToRead“JU”,PosiSHIFT不与Objor一起工作。还有其他方法来转换对象吗?转换为数组,例如Obj.EngIsI.如果顺序很重要,那么考虑一个或一个数组,而不是一个对象。