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";
}
我正在使用javascript数组filter
函数来查找javascript对象数组中的值。我无法在此过滤器中使用display()
函数。
编译器一直告诉display()
函数是undefined
。
答案 0 :(得分:3)
您可以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; }

答案 1 :(得分:1)
我认为您最好使用findIndex
代替filter
,例如:
const arrIndex = data.findIndex(function(item) {
return item.Id==1
});
if(arrIndex !== -1) { data[arrIndex] = display(); }
答案 2 :(得分:0)
试试这个:
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";
}