gpt4 book ai didi

javascript - 如何在不循环的情况下更新数组内的 JS 对象值?

转载 作者:搜寻专家 更新时间:2023-10-31 23:31:07 24 4
gpt4 key购买 nike

我知道已经有一个 similar question 回答了,但我的不一样,我只是不想找到它,我只是想更新它

我有一个像这样的 JS 对象数组:

let data = [
{
contact_id: 15,
use_id: 16,
name: 'ABC',
phoneNo: '0092123456789',
checked: false,
},
{
contact_id: 16,
use_id: 22,
name: 'DEF',
phoneNo: '0092123456788',
checked: false,
},
{
contact_id: 17,
use_id: 24,
name: 'XYZ',
phoneNo: '0092123456787',
checked: false,
}
];

现在考虑到这一点,我有一个名为 phoneNo 的属性,它保证了唯一值。

现在我想要的是切换给定数字的 checked 的值。

我尝试过的:

for (let i = 0; i < data.length; i++) {
if (data[i]['phoneNo'] === item.phoneNo) {
data[i]['checked'] = !data[i]['checked'];
break; // to make it a little efficent :-)
}
}

我写了这段代码,它运行了一段时间,但现在我意识到列表越来越大,这段代码一遍又一遍地迭代,效率非常低。

我想要什么?

有没有一种方法可以在给定 phoneNo 值的情况下直接切换属性 checked 的值,而无需遍历每个项目?

最佳答案

另一种选择是更改数据的存储方式。如果 phoneNo 是唯一的,您可以生成以电话号码为键的数据。

let data2={
'0092123456789':{
contact_id: 15,
use_id: 16,
name: 'ABC',
checked: false,
},
'0092123456788':{
contact_id: 16,
use_id: 22,
name: 'DEF',
checked: false,
},
'0092123456787':{
contact_id: 17,
use_id: 24,
name: 'XYZ',
checked: false,
}};
myPhoneNo = '0092123456787';
data2[myPhoneNo].checked = true;
console.log(data2);

关于javascript - 如何在不循环的情况下更新数组内的 JS 对象值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56545915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com