Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在.map()中返回布尔值的行为与在for()循环中的行为不同?_Javascript - Fatal编程技术网

Javascript 在.map()中返回布尔值的行为与在for()循环中的行为不同?

Javascript 在.map()中返回布尔值的行为与在for()循环中的行为不同?,javascript,Javascript,返回布尔值时使用.map()和for()是否有区别?请参阅代码示例,其中for()循环返回true,而.map()则不返回任何内容 function simpleLoop(theArray) { // Works as expected for (var i = theArray.length - 1; i >= 0; i--) { let value = anObject[theArray[i]]; if (!value || /^\s*

返回布尔值时使用
.map()
for()
是否有区别?请参阅代码示例,其中
for()
循环返回true,而
.map()
则不返回任何内容

function simpleLoop(theArray) {
    // Works as expected
    for (var i = theArray.length - 1; i >= 0; i--) {
        let value = anObject[theArray[i]];

        if (!value || /^\s*$/.test(value)) {
            return true;
        }
    }
}

function simpleMap(theArray) {
    // Does not work
    theArray.map((language) => {
        const value = anObject[language];

        if (!value || /^\s*$/.test(value)) {
            return true;
        }
    });
}

simpleLoop(theArray) // <-- returns true
simpleMap(theArray) // <-- returns nothing (?)
函数simpleLoop(数组){
//工作如期进行
对于(var i=theArray.length-1;i>=0;i--){
设值=一个对象[theArray[i]];
如果(!value | |/^\s*$/.test(value)){
返回true;
}
}
}
函数simpleMap(数组){
//不起作用
theArray.map((语言)=>{
常量值=对象[语言];
如果(!value | |/^\s*$/.test(value)){
返回true;
}
});
}
simpleLoop(theArray)/
map
函数不修改数组。它是不可变的操作。映射函数变换数组并返回一个新数组。在您的情况下,您不会返回修改后的数组。您需要在
map
回调函数之外返回测试条件

function simpleMap(theArray) {
    // Does not work
    var newArray = theArray.map((language) => {
        const value = anObject[language];

        if (!value || /^\s*$/.test(value)) {
            return true;
        }
    });
    // Return array or your condition.
    return newArray ;
}
map
函数不修改数组。它是不可变的
操作。映射函数变换数组并返回一个新数组。在您的情况下,您不会返回修改后的数组。您需要在
map
回调函数之外返回测试条件

function simpleMap(theArray) {
    // Does not work
    var newArray = theArray.map((language) => {
        const value = anObject[language];

        if (!value || /^\s*$/.test(value)) {
            return true;
        }
    });
    // Return array or your condition.
    return newArray ;
}

simpleMap
没有返回任何内容–它只是创建一个数组

尽管@Thoelle的答案是我推荐的最干净的解决方案,但为了用尽所有选项,这里有一种方法可以使用
map()
函数实现您想要的:

function simpleMap(theArray) {
  const localArray = theArray.map((language) => {
    const value = anObject[language];

    if (!value || /^\s*$/.test(value)) {
        return true;
    }
  });

  return localArray.indexOf(true) > -1;
}

simpleMap
没有返回任何内容–它只是创建一个数组

尽管@Thoelle的答案是我推荐的最干净的解决方案,但为了用尽所有选项,这里有一种方法可以使用
map()
函数实现您想要的:

function simpleMap(theArray) {
  const localArray = theArray.map((language) => {
    const value = anObject[language];

    if (!value || /^\s*$/.test(value)) {
        return true;
    }
  });

  return localArray.indexOf(true) > -1;
}

当您在
for
循环中返回时,您是从
simpleLoop
函数返回的。当您在
map
内返回时,您将从
map
的匿名函数返回。 我会使用
some
而不是
map
来获得想要的效果:

function simpleSome(theArray) {
    return theArray.some((language) => {
        const value = anObject[language];
        return !value || /^\s*$/.test(value);
    });
}

当您在
for
循环中返回时,您是从
simpleLoop
函数返回的。当您在
map
内返回时,您将从
map
的匿名函数返回。 我会使用
some
而不是
map
来获得想要的效果:

function simpleSome(theArray) {
    return theArray.some((language) => {
        const value = anObject[language];
        return !value || /^\s*$/.test(value);
    });
}


return
在回调函数中,
simpleMap
没有
return
语句。当
return
for
循环中时,您是从
simpleLoop
函数返回的。当您在
map
内返回时,您将从匿名函数返回。@Thole那么您将如何使simpleMap返回它呢?或者这是不可能的?
map()exists@NealVDV我将使用
some
而不是
map
,并从
simpleMap
返回该值。
return
位于回调函数中,
simpleMap
没有
return
语句。当
return
for
循环中时,您是从
simpleLoop
函数返回的。当您在
map
内返回时,您将从匿名函数返回。@Thole那么您将如何使simpleMap返回它呢?或者这是不可能的?
map()exists@NealVDV我会使用
some
而不是
map
,并从
simpleMap
返回它。是的,现在我知道它只是用修改后的值创建一个新数组, thanks@NealVDV不……它根本没有像@charlietfl^所说的那样修改原始数组。它实际上是在创建一个新数组,但该数组没有被使用,因为它没有被分配给任何对象或从函数返回。是的,现在我知道它只是在创建一个带有修改值的新数组,thanks@NealVDV不……它根本没有像@charlietfl^所说的那样修改原始数组。它实际上是在创建一个新数组,但该数组没有被使用,因为它没有被分配给任何对象或从函数返回。将在数组中的其他元素上返回undefined。我相当怀疑OP正试图做到这一点accomplish@charlietfl您是对的,这就是原因,我将注释添加到`//返回数组或您的条件。`以确保OP可以基于所需的条件返回。将在数组中的其他元素上返回未定义。我相当怀疑OP正试图做到这一点accomplish@charlietfl您是对的,这就是原因,我将注释添加到`//Return array或your condition.`中,以确保OP可以根据需要的条件返回。