在javascript中的字典数组中搜索id
我在JavaScript中有一个字典数组,如果找到ID,我想通过匹配将一个元素添加到数组中的一个字典中。 如果找到ID,如何搜索 这是我的字典:在javascript中的字典数组中搜索id,javascript,arrays,dictionary,Javascript,Arrays,Dictionary,我在JavaScript中有一个字典数组,如果找到ID,我想通过匹配将一个元素添加到数组中的一个字典中。 如果找到ID,如何搜索 这是我的字典: { priyanka: [ { socketid: 'bVLmrV8I9JsSyON7AAAA' } ], test: [ { socketid: 'Q2n5RzcJqPeLZ5T9AAAB' } ] } ] } 我想通过搜索socketid“bVLmrV8I9JsSyON7AAAA”添加一个元素,并向字典中添加一个元素 var
{
priyanka: [ { socketid: 'bVLmrV8I9JsSyON7AAAA' } ],
test: [ { socketid: 'Q2n5RzcJqPeLZ5T9AAAB' } ] } ]
}
我想通过搜索socketid
“bVLmrV8I9JsSyON7AAAA”添加一个元素,并向字典中添加一个元素
var myObject = {
priyanka: [ { socketid: 'bVLmrV8I9JsSyON7AAAA' } ],
test: [ { socketid: 'Q2n5RzcJqPeLZ5T9AAAB' } ] } ]
};
myObject.priyanka.forEach(function(item){
if(item.socketid === 'bVLmrV8I9JsSyON7AAAA'){
// There is a socketid equals to bVLmrV8I9JsSyON7AAAA in priyanka
break;
} else {
// Socketid not found
}
});
请注意,Array.forEach不是完全跨浏览器兼容的,您可能希望使用一个简单的for
循环:
for(var i=0; i < myObject.priyanka.length; i++){
if(myObject.priyanka[i].socketid === 'bVLmrV8I9JsSyON7AAAA'){
// There is a socketid equals to bVLmrV8I9JsSyON7AAAA in priyanka
break;
} else {
// Socketid not found
}
}
for(变量i=0;i
在数据的当前状态下,您至少必须使用线性搜索
var keyToFind = 'Q2n5RzcJqPeLZ5T9AAAB';
for(var i in dictionary){
if(dictionary[i].socketid == keyToFind){
// Add an element to the dictionary
break; // If you want to break out of the loop once you've found a match
}
}
你的问题相当令人困惑,但我认为你想做的是:
var myDict = {
priyanka: [ { socketid: 'bVLmrV8I9JsSyON7AAAA' } ],
test : [ { socketid: 'Q2n5RzcJqPeLZ5T9AAAB' } ],
}
然后在数组中循环(尽管在本例中,它们只包含一项…)
var arr=myDict.priyanka
对于(var i=0;i您可以添加如下元素
字典
var dict = {
priyanka: [ { socketid: 'bVLmrV8I9JsSyON7AAAA' } ],
test: [ { socketid: 'Q2n5RzcJqPeLZ5T9AAAB' } ] }
作用
var addToDict = function (dict,id,element) {
for(key in dict){ //search in each key of dictionary
var obj = dict[key];
if(obj[0].socketid == id) // if that key contains socketId
obj.push(element); // add element to key's array
}
}
调用函数
addToDict(dict,'bVLmrV8I9JsSyON7AAAA',{"word":"meaning"})
console.log(dict) // because object will be passed by reference the `dict` will changed.
您可以使用此帮助器功能:
function findInDict(dict, predicate)
{
for (var prop in dict) {
if (dict.hasOwnProperty(prop) && predicate(dict[prop], prop, dict)) {
return prop;
}
}
return null;
};
}
然后执行搜索:
// find property on main dictionary
var prop = findInDict(dict, function(value, name) {
// name is property name
// value is property value
return value[0].socketid == 'bVLmrV8I9JsSyON7AAAA';
});
if (prop === null) {
// prop doesn't exist, so create one?
}
您想要像priyanka:[{socketid:'bVLmrV8I9JsSyON7AAAA',word:means}]
这样的结果对象,或者其他方式是socketid
属性的字典始终是数组中的第一个元素吗?问题的标题不应该是“在字典中搜索值”吗?@user3805349您应该接受答案,并对有帮助的评论和答案进行投票。这样其他观众就会得到帮助。Thanx@priyanka(非评论,但……)你应该考虑把答案标记为被接受。这是一种在这里说“谢谢”的方式,也可以让其他人快速找到对你最有帮助的答案。
// find property on main dictionary
var prop = findInDict(dict, function(value, name) {
// name is property name
// value is property value
return value[0].socketid == 'bVLmrV8I9JsSyON7AAAA';
});
if (prop === null) {
// prop doesn't exist, so create one?
}