繁体   English   中英

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

[英]Javascript array Filter to use external function result

var data = [];

data.push({
  Id: 1,
  name: "ONE"
});
data.push({
  Id: 2,
  name: "TWO"
});
data.push({
  Id: 3,
  name: "THREE"
});

data.filter(function(item) {

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

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

我正在使用数组filter函数在对象数组内查找值。 我无法在此过滤器中使用display()函数。

编译器不断告诉display()函数undefined

您可以采用Array#forEach ,因为Array#filter返回带有过滤项的数组。

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

 function display() { return "Formatted Text"; } var data = [{ Id: 1, name: "ONE" }, { Id: 2, name: "TWO" }, { Id: 3, name: "THREE" }]; data.forEach(function(item) { if (item.Id === 1) { item.name = display(); } }); console.log(data); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

我认为您最好使用findIndex代替类似的filter

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

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

尝试这个:

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";
}

暂无
暂无

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

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