简体   繁体   English

如何使用array.map返回一个空数组

[英]how to return an empty array with array.map

I need to return an empty array if obj.chk != true to check if no checked toDos 如果obj.chk!= true,我需要返回一个空数组,以检查是否未检查toDos

function listChk() 
{
    if (!chkExist('./toDoArr')) {console.log('Please create toDo list first!')}
    else {

        let toDoArr = JSON.parse(fs.readFileSync('./toDoArr'))

        let chkToDoArr = toDoArr.map(function (obj) {
            if (obj.chk === true){
               console.log( obj.toDo)
               return obj.toDo
            }
        });
        console.log(chkToDoArr) // >>  [ undefined, undefined ]

        if (chkToDoArr.length < 1) 
        console.log('no checked toDos or empty list');
    }
}

thanks 谢谢

I believe what you need to use is filter instead of map. 我相信您需要使用的是过滤器而不是地图。 For example: 例如:

let chkToDoArr = toDoArr.filter(function (obj) {
  return obj.chk === true
})

console.log(chkToDoArr) // >>  []

Filter returns an array of results where the comparing function returns a truthy. 过滤器返回结果数组,比较函数返回真值。

 let chkToDoArr = toDoArr.filter(obj => obj.chk).map(obj => obj.toDo)
  1. filter method checks if received elemet prop is true returns that elemen. filter方法检查是否收到的elemet prop是true,然后返回该元素。 on the false returns nothing. 在错误上什么也不会返回。 if on the array all objects element prop(chk) is false returns empty array 如果在数组上所有对象元素prop(chk)为false,则返回空数组
  2. second action is map filtered data and return array with toDo prop 第二个动作是地图过滤的数据并使用toDo prop返回数组

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM