我有下面的代码
Object.entries(obj)
.map((arr) => {
if (columnArray.indexOf(arr[0].toLowerCase()) > -1) {
return { value: arr[1], name: arr[0] };
}
})
.sort(function(a, b) {
return columnArray.indexOf(a.name.toLowerCase()) - columnArray.indexOf(b.name.toLowerCase());
})
使用地图排序功能工作正常,但是当我修改了以下代码后
Object.entries(obj).filter((arr)=>columnArray.indexOf(arr[0].toLowerCase()) > -1)
.forEach((arr) => {
console.log('array value-->',arr);
return { value: arr[1], name: arr[0] };
})
.sort(function(a, b) {
return columnArray.indexOf(a.name.toLowerCase()) - columnArray.indexOf(b.name.toLowerCase());
})
我遇到了类似“未定义排序”的错误,有人可以在这里帮助我。
答案 0 :(得分:0)
这是因为“ forEach
”不返回任何内容,而map
返回的是新数组,这就是为什么它与map
而不是forEach
一起工作的原因。使用“ forEach
”,您可以在循环时修改对象,如下所示
let newArr = []
Object.entries(obj).filter((arr)=>columnArray.indexOf(arr[0].toLowerCase()) > -1)
.forEach((arr) => {
console.log('array value-->',arr);
newArr.push({ value: arr[1], name: arr[0] });
})
newArr.sort(function(a, b) {
return columnArray.indexOf(a.name.toLowerCase()) - columnArray.indexOf(b.name.toLowerCase());
})
答案 1 :(得分:0)
forEach()
对每个数组元素执行一次回调函数,且returns
的值undefined
不是chainable
。
在您的情况下,您将sort
与forEach
链接在一起将无法正常工作。
在此处forEach
查看更多信息