Javascript 如何为搜索数组编写循环
我想学习如何使代码更简洁。我正在使用JavaScript 以下是一组对象:Javascript 如何为搜索数组编写循环,javascript,jquery,html,arrays,Javascript,Jquery,Html,Arrays,我想学习如何使代码更简洁。我正在使用JavaScript 以下是一组对象: var arr = [ { key: 'qqqqq', value: '11' }, { key: 'aaaaa', value: '121' }, { key: 'bbbbb', value: '131' }, { key: 'ccccc', value: '141' }, ] var obj = { key: 'cccc', value: '-fd-' }; 我的目标是找到arr中
var arr = [
{ key: 'qqqqq', value: '11' },
{ key: 'aaaaa', value: '121' },
{ key: 'bbbbb', value: '131' },
{ key: 'ccccc', value: '141' },
]
var obj = { key: 'cccc', value: '-fd-' };
我的目标是找到arr中的obj(这意味着arritem.key==obj.key),如果是,则更新值,否则将obj附加到arr
直接投资的理念是:
let has = false;
for(const item of arr) {
if(item.key == obj.key) {
item.value = obj.value;
has = true;
break;
}
}
if(!has) {
arr.push(l);
}
有一种更简洁的方法可以实现吗?除非您被限制为对数组使用给定的格式,否则您可以通过将其转换为对象或键/值对来实现所需的内容
var data = {
'qqqqq': '11',
'aaaaa': '121',
'bbbbb': '131',
'ccccc': '141'
}
然后要添加或更新值
data['ccccc'] = '-fd-'; // updates ccccc
data['eeeee'] = 'new'; // adds eeeee
除非您被限制为数组使用给定的格式,否则您可以通过将其转换为对象或键/值对来实现所需
var data = {
'qqqqq': '11',
'aaaaa': '121',
'bbbbb': '131',
'ccccc': '141'
}
然后要添加或更新值
data['ccccc'] = '-fd-'; // updates ccccc
data['eeeee'] = 'new'; // adds eeeee
您可以使用获取对象,或者如果未找到,则将obj
推送到数组中
var arr=[{key:'qqqqq',value:'11'},{key:'aaaaa',value:'121'},{key:'bbbbbbb',value:'131'},{key:'cccccc',value:'141'}],
obj={key:'cccc',value:'-fd-'};
temp=arr.find(o=>o.key===obj.key);
如果(临时){
温度值=目标值;
}否则{
方位推力(obj);
}
控制台日志(arr)代码>
.as console wrapper{max height:100%!important;top:0;}
您可以使用它获取对象,或者如果找不到,将obj
推送到数组中
var arr=[{key:'qqqqq',value:'11'},{key:'aaaaa',value:'121'},{key:'bbbbbbb',value:'131'},{key:'cccccc',value:'141'}],
obj={key:'cccc',value:'-fd-'};
temp=arr.find(o=>o.key===obj.key);
如果(临时){
温度值=目标值;
}否则{
方位推力(obj);
}
控制台日志(arr)代码>
.as console wrapper{max height:100%!important;top:0;}
您必须首先搜索数组中是否存在项,您可以使用findIndex
=>如果找到项,只需用新的对象替换已查找索引中的值即可否则将其推送到数组中
var-arr=[
{键:'qqq',值:'11'},
{键:'aaaaa',值:'121'},
{键:'bbbbb',值:'131'},
{键:'ccccc',值:'141'},
]
var obj={key:'cccc',value:'-fd-'};
var obj2={key:'aaaaa',value:'newValue'};
函数updateOrPush(arr,obj){
var id=arr.findIndex(e=>e.key==obj.key);
如果(id>-1){
arr[id]=obj;
}
否则{
方位推力(obj);
}
}
updateOrPush(arr,obj);
updateOrPush(arr,obj2);
控制台日志(arr)
您必须首先搜索数组中是否存在项,您可以使用findIndex
=>如果找到项,只需用新的对象替换已查找索引中的值,否则将其推送到数组中
var-arr=[
{键:'qqq',值:'11'},
{键:'aaaaa',值:'121'},
{键:'bbbbb',值:'131'},
{键:'ccccc',值:'141'},
]
var obj={key:'cccc',value:'-fd-'};
var obj2={key:'aaaaa',value:'newValue'};
函数updateOrPush(arr,obj){
var id=arr.findIndex(e=>e.key==obj.key);
如果(id>-1){
arr[id]=obj;
}
否则{
方位推力(obj);
}
}
updateOrPush(arr,obj);
updateOrPush(arr,obj2);
控制台日志(arr)
希望此代码更简单
var-arr=[
{键:'qqq',值:'11'},
{键:'aaaaa',值:'121'},
{键:'bbbbb',值:'131'},
{键:'ccccc',值:'141'},
]
var obj={key:'cccc',value:'-fd-'};
var objIndex=arr.findIndex(ele=>ele.key==obj.key);
objIndex<0?arr.push(obj):arr[objIndex].value=obj.value;
控制台日志(arr)代码>希望此代码更简单
var-arr=[
{键:'qqq',值:'11'},
{键:'aaaaa',值:'121'},
{键:'bbbbb',值:'131'},
{键:'ccccc',值:'141'},
]
var obj={key:'cccc',value:'-fd-'};
var objIndex=arr.findIndex(ele=>ele.key==obj.key);
objIndex<0?arr.push(obj):arr[objIndex].value=obj.value;
控制台日志(arr)代码>密钥是否唯一?密钥是否唯一?