Javascript 由于在IE中不工作,因此在没有箭头功能的情况下转换以下逻辑

Javascript 由于在IE中不工作,因此在没有箭头功能的情况下转换以下逻辑,javascript,Javascript,我试图转换下面的逻辑没有箭头功能,因为它不在IE中工作 我已转换了getCellValue。 const getCellValue = function(tr, idx){ tr.children[idx].innerText || tr.children[idx].textContent }; const comparer = (idx, asc) => (a, b) => ( (v1, v2) => v1 !== '' && v2 !==

我试图转换下面的逻辑没有箭头功能,因为它不在IE中工作

我已转换了getCellValue。

const getCellValue = function(tr, idx){
    tr.children[idx].innerText || tr.children[idx].textContent
};
const comparer = (idx, asc) => (a, b) => (
    (v1, v2) => v1 !== '' && v2 !== '' && !isNaN(v1) && !isNaN(v2) ? 
        v1 - v2 : 
        v1.toString().localeCompare(v2)
)(getCellValue(asc ? a : b, idx), getCellValue(asc ? b : a, idx));

document.querySelectorAll('th').forEach(th => th.addEventListener('click', (() => {
    const table = th.closest('table');
    Array.from(table.querySelectorAll('.message-table:nth-child(n)'))
         .sort(comparer(Array.from(th.parentNode.children).indexOf(th), this.asc = !this.asc))
         .forEach(tr => document.getElementById("tblMsgBody").appendChild(tr));

    Array.from(table.querySelectorAll('.show-documents:nth-child(n)'))
         .forEach(tr => {
             var elementId = tr.id.replace("document-handling-", "")
             $("#tr-" + elementId).after(tr)
         });
    })
));
我无法转换比较器常量函数和其他逻辑。

const getCellValue = function(tr, idx){
    tr.children[idx].innerText || tr.children[idx].textContent
};
const comparer = (idx, asc) => (a, b) => (
    (v1, v2) => v1 !== '' && v2 !== '' && !isNaN(v1) && !isNaN(v2) ? 
        v1 - v2 : 
        v1.toString().localeCompare(v2)
)(getCellValue(asc ? a : b, idx), getCellValue(asc ? b : a, idx));

document.querySelectorAll('th').forEach(th => th.addEventListener('click', (() => {
    const table = th.closest('table');
    Array.from(table.querySelectorAll('.message-table:nth-child(n)'))
         .sort(comparer(Array.from(th.parentNode.children).indexOf(th), this.asc = !this.asc))
         .forEach(tr => document.getElementById("tblMsgBody").appendChild(tr));

    Array.from(table.querySelectorAll('.show-documents:nth-child(n)'))
         .forEach(tr => {
             var elementId = tr.id.replace("document-handling-", "")
             $("#tr-" + elementId).after(tr)
         });
    })
));

你到底遇到了什么麻烦?你试过什么?提示:您可能会被卡住,因为箭头函数有一个隐式返回,所以在转换回时可能需要添加一些返回语句。但是,使用Babel之类的工具,您可以更快地完成这一切。请参阅此模拟器:。感谢您的快速响应,我在IE中收到一个错误,因为“对象不支持属性或方法‘forEach’”,位于document.querySelectorAll(‘th’).forEach(函数(th)){你查过NodeList forEach函数了吗?。IE11不支持它。那么,你可以用什么其他逻辑结构来代替
forEach
?提示:这是一种loopHi-Matthew,我在IE中遇到一个错误,在这行文档中“Object不支持属性或方法'forEach'”。querySelectorAll('th')。forEach(函数(th){@Matthew,注意“回答好的问题”部分