Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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_Arrays - Fatal编程技术网

使用Javascript在对象数组中搜索值

使用Javascript在对象数组中搜索值,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有一个对象数组。我需要为每个属性应用包含过滤器,它必须搜索该关键字,如果任何一个属性包含输入的值,则返回该对象。请告诉我如何使用Jquery/Javascript进行包含搜索 例如: var itemPrices = [ { 'custName': 'Mike', 'custid': '1'}, { 'custName': 'secondMike', 'custid': '2' }, { 'custName': 'Ben', 'custid': '3' }, {

我有一个对象数组。我需要为每个属性应用包含过滤器,它必须搜索该关键字,如果任何一个属性包含输入的值,则返回该对象。请告诉我如何使用Jquery/Javascript进行包含搜索

例如:

var itemPrices = [
    { 'custName': 'Mike', 'custid': '1'},
    { 'custName': 'secondMike', 'custid': '2' },
    { 'custName': 'Ben', 'custid': '3' },
    { 'custName': 'dan', 'custid': '4' }
];
因此,从上面的数组中,如果我搜索Mike,它必须返回custName中包含Mike的2条记录,或者如果我搜索1,它必须返回id为1的客户。因此,它必须搜索每个对象中的每个属性,并返回匹配的对象

它更像是对象数组中的一般搜索


感谢

这可以通过迭代对象数组来完成,然后是每个对象的属性,如下所示:

var匹配=[]; var searchString='Mike'; var项目价格=[ {'custName':'Mike','custid':'1'}, {'custName':'secondMike','custid':'2'}, {'custName':'Ben','custid':'3'}, {'custName':'dan','custid':'4'} ]; 对于var i=0;i.长度;i++{ 项目价格中的forvar道具[i]{ 如果项目价格[i][prop]。包括搜索字符串{ 匹配。pushitemPrices[i]; 打破 } } }
控制台。日志匹配 这可以通过迭代对象数组来完成,然后迭代每个对象的属性,如下所示:

var匹配=[]; var searchString='Mike'; var项目价格=[ {'custName':'Mike','custid':'1'}, {'custName':'secondMike','custid':'2'}, {'custName':'Ben','custid':'3'}, {'custName':'dan','custid':'4'} ]; 对于var i=0;i.长度;i++{ 项目价格中的forvar道具[i]{ 如果项目价格[i][prop]。包括搜索字符串{ 匹配。pushitemPrices[i]; 打破 } } }
控制台。日志匹配 您可以通过检查所有属性来筛选数组

如果属性不是字符串,则需要在使用之前转换为字符串

函数数组,值{ value=value.toString.toLowerCase; 返回array.filterfunction o{ 返回Object.keyso.somefunction k{ 返回o[k].toString.toLowerCase.indexOfvalue!=-1; }; }; } var itemPrices=[{custName:'Mike',custid:'1'},{custName:'secondMike',custid:'2'},{custName:'Ben',custid:'3'},{custName:'dan',custid:'4'}]; console.logsearchitemPrices,“Mike”; console.logsearchitemPrices,2;
.as console wrapper{max height:100%!important;top:0;}您可以通过检查所有属性来筛选数组

如果属性不是字符串,则需要在使用之前转换为字符串

函数数组,值{ value=value.toString.toLowerCase; 返回array.filterfunction o{ 返回Object.keyso.somefunction k{ 返回o[k].toString.toLowerCase.indexOfvalue!=-1; }; }; } var itemPrices=[{custName:'Mike',custid:'1'},{custName:'secondMike',custid:'2'},{custName:'Ben',custid:'3'},{custName:'dan',custid:'4'}]; console.logsearchitemPrices,“Mike”; console.logsearchitemPrices,2; .作为控制台包装{最大高度:100%!重要;顶部:0;} 这个功能应该可以工作。它获取要搜索的对象数组和值。 它过滤数组,检查对象的值Object.values,然后检查是否有任何值。一些值数组包括搜索的值

这假设您在为其开发的环境中支持String.prototype.includes和object.values

这个功能应该可以工作。它获取要搜索的对象数组和值。 它过滤数组,检查对象的值Object.values,然后检查是否有任何值。一些值数组包括搜索的值


这假设您在为其开发的环境中支持String.prototype.includes和object.values。

这里更好地解释了循环对象属性:这里更好地解释了循环对象属性:该死的快手指:@OriDrori,这是短变量名的威力,等等-谢谢你的回答@NinaScholz。如果我在Id字段中有整数值呢?你可以将所有值转换成字符串,然后进行测试,就像编辑一样。该死的快手指:@OriDrori,这是短变量名的威力,等等-谢谢你的回答@NinaScholz。如果我在Id字段中有整数值呢?您可以将所有值转换为字符串,然后进行测试,就像编辑一样。看起来不错,但是具有多个匹配属性的对象返回的次数与具有匹配属性的对象返回的次数相同。最好加个休息;。当你在做的时候,把它变成一个代码片段!打得好,修好了!看起来不错,但具有多个匹配属性的对象返回的次数将与其具有匹配项的次数相同。最好加个休息;。当你在做的时候,把它变成一个代码片段!打得好,修好了!
const filterPrices = (arr, value) => arr
                                .filter(e => Object.values(e)
                                    .some(f => f.includes(value)));