Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Node.js - Fatal编程技术网

JavaScript在索引处插入数组

JavaScript在索引处插入数组,javascript,arrays,node.js,Javascript,Arrays,Node.js,我知道当索引已经存在时,如何在索引处插入数组。说arr=[1,2,3,4]和arr.splice(2,0,0)将导致[1,2,0,3,4]。但是,我有一个空数组,它是从一个没有任何特定顺序的对象填充的。实际上,数组用于对对象进行排序: var key = parseInt(object[object_key].timestamp); while (key && array_sorted[key]) { //Attempt at preventing overwriting el

我知道当索引已经存在时,如何在索引处插入数组。说
arr=[1,2,3,4]
arr.splice(2,0,0)
将导致
[1,2,0,3,4]
。但是,我有一个空数组,它是从一个没有任何特定顺序的对象填充的。实际上,数组用于对对象进行排序:

var key  = parseInt(object[object_key].timestamp);
while (key && array_sorted[key]) { //Attempt at preventing overwriting elements with same timestamp
    key++;
}
key = key ? key : array_sorted.length + 1;
array_sorted.splice(key, 0, object[object_key].data);

现在,这将生成一个数组
[object[0]。时间戳,object[1]。时间戳,object[2]。时间戳,…]
,而不是像这样的
[undefined,…,undefined,object[4]。时间戳,object[3]。时间戳,undefined,object[0]。时间戳,undefined,…,undefined,object[1]。时间戳]
。。。如何使用此方法通过
时间戳
(对象的对象属性)实现对象对象的排序?有没有办法在空数组的索引处插入?

我不想具体说明,但下面给出的示例可以帮助您解决问题

假设我们有

var objArray=[{"Name":"Anand"},{"Name":"Jhon"},{"Name":"Paul"}];
现在你可以像

objArray.sort(function(a, b) {

         var textA = a.Name.toUpperCase();
         var textB = b.Name.toUpperCase():;

         return (textA < textB) ? 1 : (textA > textB) ? -1 : 0;
         //return (textA < textB) ? -1 : (textA > textB) ? 1 : 0; //for ascending.

  });
objArray.sort(函数(a,b){
var textA=a.Name.toUpperCase();
var textB=b.Name.toUpperCase():;
返回(textAtextB)?-1:0;
//return(textAtextB)?1:0;//表示升序。
});

现在您将找到排序数组。

我不打算具体说明,但下面给出的示例可以帮助您解决问题

假设我们有

var objArray=[{"Name":"Anand"},{"Name":"Jhon"},{"Name":"Paul"}];
现在你可以像

objArray.sort(function(a, b) {

         var textA = a.Name.toUpperCase();
         var textB = b.Name.toUpperCase():;

         return (textA < textB) ? 1 : (textA > textB) ? -1 : 0;
         //return (textA < textB) ? -1 : (textA > textB) ? 1 : 0; //for ascending.

  });
objArray.sort(函数(a,b){
var textA=a.Name.toUpperCase();
var textB=b.Name.toUpperCase():;
返回(textAtextB)?-1:0;
//return(textAtextB)?1:0;//表示升序。
});

现在您将找到排序数组。

我不打算具体说明,但下面给出的示例可以帮助您解决问题

假设我们有

var objArray=[{"Name":"Anand"},{"Name":"Jhon"},{"Name":"Paul"}];
现在你可以像

objArray.sort(function(a, b) {

         var textA = a.Name.toUpperCase();
         var textB = b.Name.toUpperCase():;

         return (textA < textB) ? 1 : (textA > textB) ? -1 : 0;
         //return (textA < textB) ? -1 : (textA > textB) ? 1 : 0; //for ascending.

  });
objArray.sort(函数(a,b){
var textA=a.Name.toUpperCase();
var textB=b.Name.toUpperCase():;
返回(textAtextB)?-1:0;
//return(textAtextB)?1:0;//表示升序。
});

现在您将找到排序数组。

我不打算具体说明,但下面给出的示例可以帮助您解决问题

假设我们有

var objArray=[{"Name":"Anand"},{"Name":"Jhon"},{"Name":"Paul"}];
现在你可以像

objArray.sort(function(a, b) {

         var textA = a.Name.toUpperCase();
         var textB = b.Name.toUpperCase():;

         return (textA < textB) ? 1 : (textA > textB) ? -1 : 0;
         //return (textA < textB) ? -1 : (textA > textB) ? 1 : 0; //for ascending.

  });
objArray.sort(函数(a,b){
var textA=a.Name.toUpperCase();
var textB=b.Name.toUpperCase():;
返回(textAtextB)?-1:0;
//return(textAtextB)?1:0;//表示升序。
});

现在您将找到排序数组。

不确定我是否正确理解了您的问题。事实上,我可以看到有几个问题,我将尝试回答它们:

排序对象

不能对对象进行排序,但可以创建一个数组,其中包含按某些条件排序的对象属性键或值

var object = {
  a: {
    timestamp: 1385127590866
  },
  c: {
    timestamp: 1385127590872
  },
  b: {
    timestamp: 1385127590877
  }
},

keys = Object.keys(object), // Get object properties as array

sortedByKeys = keys.sort(function(key0, key1) { // ['a', 'b', 'c']
    if(key0 < key1) return -1;
    if(key1 > key0) return 1;
    return 0;
}),

sortedByTimestamp = keys.sort(function(key0, key1) { // ['a', 'c', 'b']
    return object[key1] - object[key0];
}),

sortedValues = [], i, j;
for(i=0, l=sortedByTimestamp.length; i<l; i++) { // [{timestamp:1385127590866}, {timestamp:1385127590872}, {timestamp:1385127590877}]
    sortedValues.push(object[sortedByTimestamp[i]]);
}

希望能有所帮助。

我不确定我是否正确理解了你的问题。事实上,我可以看到有几个问题,我将尝试回答它们:

排序对象

不能对对象进行排序,但可以创建一个数组,其中包含按某些条件排序的对象属性键或值

var object = {
  a: {
    timestamp: 1385127590866
  },
  c: {
    timestamp: 1385127590872
  },
  b: {
    timestamp: 1385127590877
  }
},

keys = Object.keys(object), // Get object properties as array

sortedByKeys = keys.sort(function(key0, key1) { // ['a', 'b', 'c']
    if(key0 < key1) return -1;
    if(key1 > key0) return 1;
    return 0;
}),

sortedByTimestamp = keys.sort(function(key0, key1) { // ['a', 'c', 'b']
    return object[key1] - object[key0];
}),

sortedValues = [], i, j;
for(i=0, l=sortedByTimestamp.length; i<l; i++) { // [{timestamp:1385127590866}, {timestamp:1385127590872}, {timestamp:1385127590877}]
    sortedValues.push(object[sortedByTimestamp[i]]);
}

希望能有所帮助。

我不确定我是否正确理解了你的问题。事实上,我可以看到有几个问题,我将尝试回答它们:

排序对象

不能对对象进行排序,但可以创建一个数组,其中包含按某些条件排序的对象属性键或值

var object = {
  a: {
    timestamp: 1385127590866
  },
  c: {
    timestamp: 1385127590872
  },
  b: {
    timestamp: 1385127590877
  }
},

keys = Object.keys(object), // Get object properties as array

sortedByKeys = keys.sort(function(key0, key1) { // ['a', 'b', 'c']
    if(key0 < key1) return -1;
    if(key1 > key0) return 1;
    return 0;
}),

sortedByTimestamp = keys.sort(function(key0, key1) { // ['a', 'c', 'b']
    return object[key1] - object[key0];
}),

sortedValues = [], i, j;
for(i=0, l=sortedByTimestamp.length; i<l; i++) { // [{timestamp:1385127590866}, {timestamp:1385127590872}, {timestamp:1385127590877}]
    sortedValues.push(object[sortedByTimestamp[i]]);
}

希望能有所帮助。

我不确定我是否正确理解了你的问题。事实上,我可以看到有几个问题,我将尝试回答它们:

排序对象

不能对对象进行排序,但可以创建一个数组,其中包含按某些条件排序的对象属性键或值

var object = {
  a: {
    timestamp: 1385127590866
  },
  c: {
    timestamp: 1385127590872
  },
  b: {
    timestamp: 1385127590877
  }
},

keys = Object.keys(object), // Get object properties as array

sortedByKeys = keys.sort(function(key0, key1) { // ['a', 'b', 'c']
    if(key0 < key1) return -1;
    if(key1 > key0) return 1;
    return 0;
}),

sortedByTimestamp = keys.sort(function(key0, key1) { // ['a', 'c', 'b']
    return object[key1] - object[key0];
}),

sortedValues = [], i, j;
for(i=0, l=sortedByTimestamp.length; i<l; i++) { // [{timestamp:1385127590866}, {timestamp:1385127590872}, {timestamp:1385127590877}]
    sortedValues.push(object[sortedByTimestamp[i]]);
}

希望能有所帮助。

回答实际问题,Javascript中的对象不保证任何顺序

要从对象的
对象中获得所需的基于顺序的行为,您确实需要将其转换为对象的
数组。然后,您可以按照Anand的建议,使用
sort
方法对其进行排序

或者,您可以边走边对它们进行排序:

var objects = {
  1:{timestamp:"12345"},
  2:{timestamp:"34567"},
  3:{timestamp:"23456"}
}

var array = [];

for(var i in objects){

  var timestamp = parseInt(objects[i].timestamp);

  var added = false;

  for(var j in array){

    if(timestamp > parseInt(array[j].timestamp)){

      array.splice(j + 1, 0, objects[i]);

      added = true;

      break;

    }
  }

  if (!added) {

    array.unshift(objects[i]);

  }
}

为了回答实际问题,Javascript中的对象不保证任何顺序

要从对象的
对象中获得所需的基于顺序的行为,您确实需要将其转换为对象的
数组。然后,您可以按照Anand的建议,使用
sort
方法对其进行排序

或者,您可以边走边对它们进行排序:

var objects = {
  1:{timestamp:"12345"},
  2:{timestamp:"34567"},
  3:{timestamp:"23456"}
}

var array = [];

for(var i in objects){

  var timestamp = parseInt(objects[i].timestamp);

  var added = false;

  for(var j in array){

    if(timestamp > parseInt(array[j].timestamp)){

      array.splice(j + 1, 0, objects[i]);

      added = true;

      break;

    }
  }

  if (!added) {

    array.unshift(objects[i]);

  }
}

为了回答实际问题,Javascript中的对象不保证任何顺序

要从对象的
对象中获得所需的基于顺序的行为,您确实需要将其转换为对象的
数组。然后,您可以按照Anand的建议,使用
sort
方法对其进行排序

或者,您可以边走边对它们进行排序:

var objects = {
  1:{timestamp:"12345"},
  2:{timestamp:"34567"},
  3:{timestamp:"23456"}
}

var array = [];

for(var i in objects){

  var timestamp = parseInt(objects[i].timestamp);

  var added = false;

  for(var j in array){

    if(timestamp > parseInt(array[j].timestamp)){

      array.splice(j + 1, 0, objects[i]);

      added = true;

      break;

    }
  }

  if (!added) {

    array.unshift(objects[i]);

  }
}

为了回答实际问题,Javascript中的对象不保证任何顺序

要从对象的
对象中获得所需的基于顺序的行为,您确实需要将其转换为对象的
数组。然后,您可以按照Anand的建议,使用
sort
方法对其进行排序

或者,您可以边走边对它们进行排序:

var objects = {
  1:{timestamp:"12345"},
  2:{timestamp:"34567"},
  3:{timestamp:"23456"}
}

var array = [];

for(var i in objects){

  var timestamp = parseInt(objects[i].timestamp);

  var added = false;

  for(var j in array){

    if(timestamp > parseInt(array[j].timestamp)){

      array.splice(j + 1, 0, objects[i]);

      added = true;

      break;

    }
  }

  if (!added) {

    array.unshift(objects[i]);

  }
}

var a=[];a、 拼接(2,0,'测试')将起作用。否则,
a[2]=“test”
就不适用于you@megawac
a.length
返回1而不是3[2]将创建具有空数组的对象和键为“2”的元素……是否尝试使用时间戳作为键对这些对象进行索引?因为