Javascript 基于其值更新数组元素
如果我有以下数组Javascript 基于其值更新数组元素,javascript,reactjs,Javascript,Reactjs,如果我有以下数组 let array = [ {review: 'not_started', status: ''}, {review: 'not_started', status: ''}, {review: 'not_started', status: ''}, {review: 'not_started', status: ''} ] 当数组中所有元素的检查都是not_start时,我想将第一个元素的状态更新为Begin here,将其他元素的状态更新为locked。像这
let array = [
{review: 'not_started', status: ''},
{review: 'not_started', status: ''},
{review: 'not_started', status: ''},
{review: 'not_started', status: ''}
]
当数组中所有元素的检查都是not_start
时,我想将第一个元素的状态更新为Begin here
,将其他元素的状态更新为locked。像这里
let array = [
{review: 'not_started', status: 'Begin here'},
{review: 'not_started', status: 'locked'},
{review: 'not_started', status: 'locked'},
{review: 'not_started', status: 'locked'}
]
let array = [
{review: 'completed', status: 'completed'},
{review: 'not_started', status: 'Begin here'},
{review: 'not_started', status: 'locked'},
{review: 'not_started', status: 'locked'}
]
当第一个的审核已完成
时,将其状态更新为已完成
,将第二个的状态更新为此处开始
,将其他状态更新为已锁定
,如此处所示
let array = [
{review: 'not_started', status: 'Begin here'},
{review: 'not_started', status: 'locked'},
{review: 'not_started', status: 'locked'},
{review: 'not_started', status: 'locked'}
]
let array = [
{review: 'completed', status: 'completed'},
{review: 'not_started', status: 'Begin here'},
{review: 'not_started', status: 'locked'},
{review: 'not_started', status: 'locked'}
]
如果完成前两个元素的检查,那么数组将如下所示
let array = [
{review: 'completed', status: 'completed'},
{review: 'completed', status: 'completed'},
{review: 'not_started', status: 'Begin here'},
{review: 'not_started', status: 'locked'}
]
我尝试在数组(.map
)上循环,但无法根据查看结果确定如何更新状态
我如何在react中实现这一点
谢谢让数组=[
{审阅:'未启动',状态:'},
{审阅:'未启动',状态:'},
{审阅:'未启动',状态:'},
{审阅:'未启动',状态:'}
]
let not_start=true;
array.forEach((项)=>{
if(item.review!=“未启动”){
未启动=错误;
}
})
如果(未启动){
array=array.map((项目,索引)=>{
如果(索引==0){
返回{review:'not_start',status:'Begin here'}
}
否则返回{review:'not_start',status:'locked'}
})
}
/////////////////////问题的第二部分/////////////////////////////
对于(让i=0;我可以请你在使用JSX的地方添加它吗?肯定有一些用户操作来更新评论和状态react和普通js没有区别,因为react只使用js映射。谢谢@Rohith Murali。我尝试将第一个元素的评论更新为completed,并将第一个元素的状态更新为completed,第二个元素的状态更新为B。)在这里注册,但它没有更新其他两个的状态。你知道为什么吗?再次感谢,但当所有这些条件(部分)都在一起时,它的更新状态锁定了所有元素。我还更新了问题,再次更新了答案,你能在哪里整理它?
let STATUS_BEGIN = 'Begin here';
let STATUS_LOCKED = 'locked';
let STATUS_COMPLETE = 'completed';
let STATUS_NOT_STARTED = 'not_started';
function updateStatus(array) {
var count = 0;
array.forEach(function(e, i) {
if (e.review == STATUS_NOT_STARTED && e.status != STATUS_BEGIN) {
count = count + 1;
}
if (e.review == STATUS_COMPLETE && e.status != STATUS_COMPLETE) {
count = count + 1;
}
if (e.review == STATUS_NOT_STARTED && count == 1) {
e.status = STATUS_BEGIN;
} else if (e.review == STATUS_COMPLETE && count == 1) {
e.status = STATUS_COMPLETE;
if (array[i + 1]) array[i + 1].status = STATUS_BEGIN;
} else if (e.status != STATUS_BEGIN && e.status != STATUS_COMPLETE) {
e.status = STATUS_LOCKED;
}
})
return array;
}
let array = [{
review: STATUS_NOT_STARTED,
status: ''
},
{
review: STATUS_NOT_STARTED,
status: ''
},
{
review: STATUS_NOT_STARTED,
status: ''
},
{
review: STATUS_NOT_STARTED,
status: ''
}
]
updateStatus(array);