【发布时间】:2021-02-19 04:27:11
【问题描述】:
我对更改对象数组中的属性有疑问。我将在下面发布我的代码以便更好地理解。首先,我有一个包含两个数组的对象数组,第一个数组包含名为“first”的属性,第二个数组包含“last”。当我单击该函数时,它将传递特定名称,例如第一个或最后一个字符串。之后,我必须遍历对象数组并更改与属性名称匹配的值(tempFirst,tempLast)。我只是在 onHandle 函数中声明,但在我的实际项目中,我正在传递参数。
示例是:if (first === first) 更改该属性的值。
import logo from './logo.svg';
import './App.css';
import react ,{ Component } from 'react';
class App extends Component {
constructor(props) {
super(props);
this.state = {
objectTemp: []
};
}
componentDidMount(){
let objectArray = [
{
name: "hello",
first: 77
},
{
name: "world",
last: 66
},
]
this.setState({
objectTemp: objectArray
})
}
onHandle = () => {
let tempFirst = "first";
let tempLast = "last";
let storeState = [...this.state.objectTemp];
//console.log(storeState);
// here i want to check if either tempfirst or templast is equal to the property on object array
for(let i = 0; i < storeState.length; i++){
//if(storeState[i] === tempLast){
console.log(...storeState[i]);
//}
}
}
render() {
console.log(this.state);
return <button onClick={this.onHandle}>VIEW</button>;
}
}
export default App;
【问题讨论】:
-
你想改变什么?您关于代码的问题不是很清楚。你想用这段代码做什么?如果您正在检查
name属性是否等于tempLast值,我认为代码中的条件应该是storeState[i].name === tempLast。同样,这里的目标不是很清楚。 -
@DrewReese 嗨,我很抱歉没有明确说明我的问题。我还上传了图片,看看是否可以帮助其他人了解我的确切要求。
-
那么如果对象的当前key与参数匹配,更新key关联的value?,即key="last",更新
objectArray[1].lastvalue,如果key="name"更新name两个元素的属性? -
@DrewReese 是的,这就是我想要做的......我知道如何获取密钥的值,但不确定如何检查密钥是否等于收到的密钥从参数..
-
@DrewReese 非常感谢!这正是我所需要的。但我正在查看您的代码并试图了解您所做的事情。我真的不想在不了解代码实际在做什么的情况下使用它。
标签: javascript css arrays reactjs object