[英]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";
}
我正在使用javascript数组filter
函数在javascript对象数组内查找值。 我无法在此过滤器中使用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.