好吧所以这已经破坏了我的一天,我正在尝试设置一个对象的值的属性,我已经传递给一个函数,但它根本就没有表现
findFoodItemsWithRelevantNutrients = relevantNutrients => {
let foodItems = [];
let parent = this;
console.log(relevantNutrients);//STACK OVERFLOW: #3
for(let q=0; q<19; q++) {
let food = FoodItems[q];
//Goes through 20 foods present in FoodItems array
let foodProps = Object.entries(food); //breaks each field for a given food object into key/value pairs
food.relevanceScore = 0;
food.keyNutrients = [];
relevantNutrients.forEach(function (nutrientReport) {
//Go through each relevant nutrient passed into this function
//var nutrientReport = relevantNutrients[i];
let currentNutrient = nutrientReport.nutrient;
for(let j=0; j<foodProps.length; j++) {
let prop = foodProps[j];
let propName = prop[0];
let propValue = prop[1];
//see if the nutrient is present in a significant amount in the food
if( propName === currentNutrient.name && propValue > 10 ) {
nutrientReport.RDA = propValue; //set to propValue
console.log(nutrientReport.RDA); //STACK OVERFLOW #1 -shows propValue
console.log(nutrientReport); //STACK OVERFLOW #2 - shows arbitrary value
food.relevanceScore += 10;
food.relevanceScore += nutrientReport.benefits.length + nutrientReport.toxicity.length + nutrientReport.deficiencyArr.length;
food.keyNutrients.push(nutrientReport);
}
}
});
if(food.relevanceScore > 10) {
food = parent.getItemTotalOrganBenefitScores(food);
foodItems.push(food);
}
}
console.log(foodItems);
foodItems.sort(function (foodA, foodB) {
return foodB.relevanceScore - foodA.relevanceScore;
});
return foodItems;
};
我的混淆产生于我以“STACK OVERFLOW”为前缀的行
问题:当我记录整个对象时,我看不到我只是将“nutrientReport.RDA”设置为的值。 问题:为什么我设置的值不能正确粘贴?
问题:当我在这里记录作为参数传入的对象的值时,它们反映了问题#2中记录的值
问题:如果我在设置任何值之前记录它,这怎么可能。
额外细节:
此功能在反应组件内
并依赖于从另一个函数返回的对象。
像这样
this.findFoodItemsWithRelevantNutrients(this.searchNutrientBenefits(this.props.queryVariable))