我知道已经回答了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 :-)
}
}
我编写了这段代码,并且在一段时间内运行良好,但是现在我意识到列表越来越大,并且此代码反复迭代,这效率很低。
我想要什么?
有没有一种方法可以直接在给定
checked
值的情况下切换phoneNo
属性的值,而无需遍历每个项目? 最佳答案
另一种选择是更改数据存储方式。如果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);