Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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数组过滤器_Javascript_Arrays_Object - Fatal编程技术网

使用外部函数结果的Javascript数组过滤器

使用外部函数结果的Javascript数组过滤器,javascript,arrays,object,Javascript,Arrays,Object,我使用数组过滤器函数来查找对象数组中的值。我无法在此过滤器内使用显示功能 编译器一直告诉显示函数未定义。您可以使用,因为返回一个包含筛选项的数组 看起来,您希望分配一个带有条件的新值,因此不需要新数组 功能显示{ 返回格式化文本; } var data=[{Id:1,name:ONE},{Id:2,name:TWO},{Id:3,name:THREE}]; data.forEachfunctionitem{ 如果item.Id==1{ item.name=显示; } }; 控制台日志数据; .

我使用数组过滤器函数来查找对象数组中的值。我无法在此过滤器内使用显示功能

编译器一直告诉显示函数未定义。

您可以使用,因为返回一个包含筛选项的数组

看起来,您希望分配一个带有条件的新值,因此不需要新数组

功能显示{ 返回格式化文本; } var data=[{Id:1,name:ONE},{Id:2,name:TWO},{Id:3,name:THREE}]; data.forEachfunctionitem{ 如果item.Id==1{ item.name=显示; } }; 控制台日志数据; .as控制台包装{max height:100%!important;top:0;}您可以使用,因为返回一个包含筛选项的数组

看起来,您希望分配一个带有条件的新值,因此不需要新数组

功能显示{ 返回格式化文本; } var data=[{Id:1,name:ONE},{Id:2,name:TWO},{Id:3,name:THREE}]; data.forEachfunctionitem{ 如果item.Id==1{ item.name=显示; } }; 控制台日志数据;
.as console wrapper{max height:100%!important;top:0;}我认为您最好使用findIndex,而不是像下面这样的过滤器:


我认为您最好使用findIndex而不是过滤器,如:

试试这个:

const arrIndex = data.findIndex(function(item) {
   return item.Id==1
});

if(arrIndex !== -1) { data[arrIndex] = display(); }
试试这个:

const arrIndex = data.findIndex(function(item) {
   return item.Id==1
});

if(arrIndex !== -1) { data[arrIndex] = display(); }

筛选器返回一个包含已筛选项的数组。您需要一个赋值,只需返回检查结果。@NinaScholz您可以演示一下吗?您在显示的代码中还有其他问题,但没有理由显示为未定义。Filter返回一个包含筛选项的数组。您需要一个任务,只需返回检查结果。@NinaScholz您可以演示一下吗?您在显示的代码中有其他问题,但没有理由显示是非限定的。他可以按ID创建一个项目,然后更新返回的项目(如果有)。或者,他可以根据ID创建一个项目,然后更新返回的项目(如果有)。为您的答案添加一个解释。我使用的不是forEach而是map函数。过滤器将文件的数据,所以这里地图是首选添加一个解释到您的答案。而不是forEach只是我使用的地图功能。过滤器将对数据进行文件处理,因此此处的映射更可取
var data = [{
    Id: 1,
    name: "ONE"
}, {
    Id: 2,
    name: "TWO"
}, {
    Id: 3,
    name: "THREE"
}];

data.map(function(item) {

    if (item.Id == 1) {
        item.name = display();
    }
    return item;
});

function display() {
    return "Formatted Text";
}