是否有有效的方法添加数组元素';在JavaScript中按另一个属性排序时,是否将原始索引值作为属性?
AI有一个数组,我正在按标题属性排序:是否有有效的方法添加数组元素';在JavaScript中按另一个属性排序时,是否将原始索引值作为属性?,javascript,arrays,Javascript,Arrays,AI有一个数组,我正在按标题属性排序: theArray.sort(function(a, b) { var titleA = a.title.toLowerCase(); var titleB = b.title.toLowerCase(); return (titleA < titleB) ? -1 : (titleA > titleB) ? 1 : 0; }); theArray.sort(函数(a,b){ va
theArray.sort(function(a, b) {
var titleA = a.title.toLowerCase();
var titleB = b.title.toLowerCase();
return (titleA < titleB) ? -1 : (titleA > titleB) ? 1 : 0;
});
theArray.sort(函数(a,b){
var titleA=a.title.toLowerCase();
var titleB=b.title.toLowerCase();
返回值(titleAtitleB)?1:0;
});
这很好,但除了获得排序数组外,我还希望保留原始数组索引值以用于其他目的(它们指向另一个数组)。我想将其作为property.idx存储在数组的每个元素中
当然,我可以在排序之前简单地添加该属性,方法如下:
for (var i=0; i<theArray.length; i++) {theArray.index = i);
for(var i=0;i排序时创建一个新数组,使用排列将有助于:
const newArray = [...theArray].sort(function(a, b) {
var titleA = a.title.toLowerCase();
var titleB = b.title.toLowerCase();
return (titleA < titleB) ? -1 : (titleA > titleB) ? 1 : 0;
});
const newArray=[…theArray].sort(函数(a,b){
var titleA=a.title.toLowerCase();
var titleB=b.title.toLowerCase();
返回值(titleAtitleB)?1:0;
});
您可以对标记数组进行排序,而不是对原始数组进行排序:
然后,当你需要对“排序”数组做一些事情时,迭代索引并访问theArray[i]
。当你需要对排序的索引做一些事情时,只需迭代索引
数组。有趣的想法。我会测试。谢谢。
const getTitle = i => theArray[i].title.toLowerCase();
const indicies = theArray.map((_, i) => i);
indicies.sort((indA, indB) => getTitle(indB).localeCompare(getTitle(indA)));