目前,我遍历一组linkedObjects来搜索isMatch。此测试查看是否在数组obj.resource_ids中存在element.id,如果是,则我们将匹配的appointmentObj中的printable-string添加到printStr中的数组。
问题来了,因为value.resource_uniqueids可能是一个包含许多id的数组,但我的测试只找到一个。
不知何故,我需要匹配value.resource_uniqueids中的所有ID。 - 可能是我需要为每个value.resource_uniqueids添加一个新的appointmentObj,然后连接每个等效的printable-string
我希望这是有道理的。如何为value.resource_uniqueids的每个匹配添加新的$ {currentMatch.printable-string}
谢谢!
_.forEach(appointmentObj, (value,i) => {
// value.resource_uniqueids is always an array, most of the time it only has one element
// but sometimes it can have more than one which means we only match one below in isMatch function
_.set(appointmentObj[i], 'resource_ids', value.resource_uniqueids );
_.set(appointmentObj[i], 'printable-string', `${value.title}, ${moment(value.created_at).format( 'Do MMMM YYYY')}` );
});
linkedObjects.forEach((element, index) => {
let isMatch = appointmentObj.find((obj) => {
return _.includes(obj.resource_ids,element.id);
});
if(isMatch) {
linkedObjects[index]['content']['printstring'] = `${currentMatch.printable-string}`;
}
});
答案 0 :(得分:1)
问题来了,因为value.resource_uniqueids可能是一个数组 包含许多ID但我的测试只找到一个。
Array.prototype.find()
返回数组中的单个匹配元素。如果预期结果是迭代数组中的多个匹配结果,请使用Array.prototype.filter()
。