Javascript 如何解决Array.sort无法分配给对象的只读属性“0”的问题
在我的React应用程序中,排序功能出现错误 未捕获的TypeError:无法分配给对象“[object Array]”的只读属性“0” 我不知道问题是什么,功能是:Javascript 如何解决Array.sort无法分配给对象的只读属性“0”的问题,javascript,reactjs,Javascript,Reactjs,在我的React应用程序中,排序功能出现错误 未捕获的TypeError:无法分配给对象“[object Array]”的只读属性“0” 我不知道问题是什么,功能是: const preparedSites = useMemo( () => sites .sort(sortSiteSelection(site)) .map(elm => { const arr = [
const preparedSites = useMemo(
() =>
sites
.sort(sortSiteSelection(site))
.map(elm => {
const arr = [
elm.siteId,
elm.city,
elm.state,
elm.country,
elm.address,
elm.status,
];
if (nearestSites.length)
arr.push(
nearestSites.find(s => s.closestSiteId === elm.siteId).distance,
);
return arr;
})
.sort((a, b) => a[6] - b[6]),
[sites, site, nearestSites],
);
.sort部分和“sortSiteSelection”上发生的错误如下
const nameCompare = (x, y) => x.name.localeCompare(y.name);
const cityCompare = (x, y) => x.city.localeCompare(y.city);
const compareCountry = s => (x, y) => {
if (!s) return 0;
if (x.countryCode === s.countryCode && y.countryCode === s.countryCode)
return 0;
else if (x.countryCode === s.countryCode) return -1;
else if (y.countryCode === s.countryCode) return 1;
else return x.countryCode.localeCompare(y.countryCode);
};
export const sortSiteSelection = selectedSite => {
if (!selectedSite) {
console.log('NULL FROM SORT SITE');
return () => 0;
}
pipeSort(compareCountry(selectedSite), nameCompare, cityCompare);
};
网站的OBJ是公正的
{
siteId,
city,
elm.state,
country,
address,
status,
}
我会说这是因为数组处于严格模式。您应该创建此阵列的副本。这有多种方法
[...sites].sort(sortSiteSelection(site))
或
我希望这能解决您面临的问题我尝试了两种方法,但仍然存在此问题未捕获TypeError:无法分配给数组中对象“[object Array]”的只读属性“0”。排序错误以某种方式得到修复,在使用其他排序的不同位置是一个错误,添加此选项可修复此问题
sites.slice().sort(sortSiteSelection(site))