小编Rah*_*ulB的帖子

javascript属性和javascript变量有什么区别?

在javascript中分配值时,我遇到了这个问题

var obj = {
  resultCodeId: data[i].resultCodes[j].resultCodeId
};
var resultCodeId= data[i].resultCodes[j].resultCodeId;
Run Code Online (Sandbox Code Playgroud)

怎么':'和'='在javascript中根本不同?变量也有属性或只是javascript中的对象有属性?

javascript properties object

6
推荐指数
1
解决办法
2697
查看次数

如果属性存在,则对对象数组进行排序

我有一个对象数组。在每个这些对象中,只有几个具有属性,我想对数组进行排序,将具有该属性的那些对象放在顶部。

前-

arr= [{key1: "obj1val1", key2 :"obj1val2"}, 
      {key2 :"obj2val2"}, 
      {key1: "obj3val3", key2 :"obj3val3"},
      {key2 :"obj4val1"},
      {key1: "obj5val1", key2 :"obj5val2"}
]
Run Code Online (Sandbox Code Playgroud)

按key1排序

Expected Result - [{key1: "obj1val1", key2 :"obj1val2"}, 
                   {key1: "obj3val3", key2 :"obj3val3"},
                   {key1: "obj5val1", key2 :"obj5val2"}, 
                   {key2 :"obj2val2"}, 
                   {key2 :"obj4val1"}]
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法-

sort : function(arr) {
              var copyArr = arr.slice();
              var newArr = [];
              for(var i=0; i<arr.length; i++){
                if(arr[i].key1){
                  newArr.push(arr[i]);
                    copyArr.splice(i, 1);
                }
              }
              Array.prototype.push.apply(newArr, copyArr);
              return newArr;
            }
Run Code Online (Sandbox Code Playgroud)

不完全是,但是我发现上述方法存在差异。对于更大长度的数组,某些具有key1的对象不会移到顶部。可以通过sortjavascript 的内部方法来完成此操作吗?如果是,自定义函数将如何比较?

仅支持ES5方法。

javascript arrays

1
推荐指数
1
解决办法
272
查看次数

标签 统计

javascript ×2

arrays ×1

object ×1

properties ×1