我可能没有正确使用jQuery的inArray()
函数,但我必须构造一个对象,该对象只有两个其他JavaScript对象的索引,其值完全匹配:
var arr1 = {
a: "alfa",
b: "beta"};
var arr2 = {b: "beta"};
alert(jQuery.inArray(arr2, arr1));
在这里,我希望得到一个仅包含:
的对象{b: "beta"}
同样,如果数组看起来像这样:
var arr1 = {
a: "alfa",
b: "beta",
c: "test"};
var arr2 = {b: "beta",
c: "not the same value"};
我仍然期待:
{b: "beta"}
因为c
索引中的值不完全相同。
提前致谢, 再见 小时。
答案 0 :(得分:2)
试试这个:
http://jsfiddle.net/treeface/u5xDz/1/
这里的想法是循环遍历arr1
对象并查看arr2中是否存在类似的索引,以及arr1
中该索引的值是否与arr2
中的索引值相匹配。
var arr1 = {
a: "alfa",
b: "beta"
},
arr2 = {b: "beta"},
combinedArr = {};
$.each(arr1, function(ind, el) {
if (typeof arr2[ind] !== 'undefined' && arr1[ind] === arr2[ind])
combinedArr[ind] = el;
});
console.log(combinedArr);
答案 1 :(得分:2)
默认的jQuery inArray函数无法同时搜索键和值,
$.fn.array_search = function(what, where)
{
var Match = null;
if(where === undefined) var where = 'value';
$(this).each(function(key, value)
{
if(where == 'value')
{
if(what == value) Match = key;
}else
{
if(what == key) Match = value;
}
});
return (Match) ? Match : false;
}
用法:
$(array).array_search('Value to Search'); //default search in value
$(array).array_search('key to search', 'key'); //search in key
答案 2 :(得分:1)
您在示例中定义的变量不是数组,而是对象。此外,此函数的第一个参数应该是要搜索的值。因此,您的代码需要修改为:
var arr1 = [
"alfa",
"beta" ];
var arr2 = [ "beta" ];
alert(jQuery.inArray(arr2[0], arr1));
我认为你可能追求的更多是两个对象/数组的交叉。您可以使用jQuery.map()或jQuery.grep()函数编写专门的比较函数。
答案 3 :(得分:0)
那不是数组。这是一个对象。 [inArray] [1]参数也是value, array
。所以你可以像这样检查数组中的对象:
var b = {b: "beta"}
var arr1 = [
{a: "alfa"},
b
];
alert(jQuery.inArray(b, arr1));
使用方括号
声明数组[value,value]
声明对象
{name: value, name: value }
[1]:http:// api.jquery.com/jQuery.inArray