我有一个像["1", "5", "9"]
这样的键的数组
我有一个具有相同键的对象,如下所示:selections: { "5": {}, "12": {} }
从中获取boolean
值的最简单方法是什么?
如果我的对象中存在数组中的任何键,它应该返回true
。
我正在使用角度和lodash,有没有任何智能解决方案或我需要为它做一个循环?如果我做一个循环,最有效的方法是什么?
答案 0 :(得分:3)
您是否尝试使用hasOwnProperty()?
function check() {
var selections = { "5": {}, "12": {} };
return ["1", "5", "9"].filter(function(value) {
return selections.hasOwnProperty(value);
}).length > 0;
}
答案 1 :(得分:3)
'<?php echo $jsonencoded_array; ?>'
答案 2 :(得分:1)
只需一行代码:
var array = ["1", "5", "9"],
obj = { "5": {}, "12": {} },
any = array.some(function (a) { return a in obj; });
document.write(any);
答案 3 :(得分:0)
var keys = ["1", "5", "9"];
var selections = {"5": {}, "12": {}};
function hasAnyKey(keys, selections) {
for (var i = 0; i < keys.length; i++) {
if (selections[keys[i]]) {
return true;
}
}
return false;
};
hasAnyKey(keys, selections);
此解决方案将在有1个匹配时立即返回,这相当于当至少有1个匹配时返回true,这就是您想要的。理论上,对于较大的输入,这将比Array.prototype.filter
的解决方案更快。
答案 4 :(得分:0)
Array.prototype.some()为数组中的每个元素执行一次回调函数,直到找到一个回调返回true值的元素。 如果找到这样的元素,some()会立即返回true。 否则,some()会返回false。 Array.prototype.some()位于ECMAScript 1.5,应该可以在任何地方使用。
function compareArrayToObject(array, obj) {
return array.some(function (a) { return a in obj; });
}
var array = ["1", "5", "9"];
var obj = { "5": {}, "12": {} };
var result = compareArrayToObject(array, obj);
document.write(result);
&#13;