Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为搜索数组编写循环_Javascript_Jquery_Html_Arrays - Fatal编程技术网

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中

我想学习如何使代码更简洁。我正在使用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中的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)密钥是否唯一?密钥是否唯一?