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,'测试')如果要在数组或索引2的开头插入,则代码>将起作用。否则,a[2]=“test”
就不适用于you@megawaca.length
返回1而不是3[2]将创建具有空数组的对象和键为“2”的元素……是否尝试使用时间戳作为键对这些对象进行索引?因为