我想根据searchString.e.g搜索来自给定数组的匹配值对象.seatch string将是'Object 0'。
var objArray = [
{ id: 0, name: 'Object 0', otherProp: '321', secondVal:'stack' },
{ id: 1, name: 'O1', otherProp: 'Object 0', secondVal: 'Overflow' },
{ id: 2, name: 'Another Object', otherProp: '850', secondVal: 'Context' },
{ id: 3, name: 'Almost There', otherProp: '046', secondVal: 'Object 1' },
{ id: 4, name: 'Last Obj', otherProp: '78', secondVal: 'test' }
];
现在我想只搜索那些以Object
为值的数组。意味着它应该归还给我0,1& 3对象
帮助将不胜感激
答案 0 :(得分:1)
您可以使用array.filter
方法执行此操作,并循环使用此过滤器方法中的所有属性。
var objArray = [
{ id: 0, name: 'Object 0', otherProp: '321', secondVal:'stack' },
{ id: 1, name: 'O1', otherProp: 'Object 0', secondVal: 'Overflow' },
{ id: 2, name: 'Another Object', otherProp: '850', secondVal: 'Context' },
{ id: 3, name: 'Almost There', otherProp: '046', secondVal: 'Object 0' },
{ id: 4, name: 'Last Obj', otherProp: '78', secondVal: 'test' }
];
var filteredArray = objArray.filter((obj) => {
for (var key in obj) {
if (obj[key] === 'Object 0') {
return true;
}
}
return false;
});
答案 1 :(得分:1)
您可以遍历数组中的每个对象,获取每个对象的键以防止自己处于对象中的动态属性,然后检查该键的值是否具有Object
作为子字符串。请注意以下代码中的obj[key].toString()
。使用toString()
是因为您的id
具有整数值而indexOf()
适用于字符串值。因此,使用它可以防止错误。
var objArray = [
{ id: 0, name: 'Object 0', otherProp: '321', secondVal:'stack' },
{ id: 1, name: 'O1', otherProp: 'Object 0', secondVal: 'Overflow' },
{ id: 2, name: 'Another Object', otherProp: '850', secondVal: 'Context' },
{ id: 3, name: 'Almost There', otherProp: '046', secondVal: 'Object 1' },
{ id: 4, name: 'Last Obj', otherProp: '78', secondVal: 'test' }
];
var res = [];
objArray.filter((obj) => {
Object.keys(obj).forEach((key)=>{
if(obj[key].toString().indexOf('Object') !== -1){
res.push(obj);
}
});
});
console.log(res);

答案 2 :(得分:0)
您可以在阵列中使用filter()
来完成此操作。
以下是您正在寻找的样本
var objArray = [
{ id: 0, name: 'Object 0', otherProp: '321', secondVal:'stack' },
{ id: 1, name: 'O1', otherProp: 'Object 0', secondVal: 'Overflow' },
{ id: 2, name: 'Another Object', otherProp: '850', secondVal: 'Context' },
{ id: 3, name: 'Almost There', otherProp: '046', secondVal: 'Object 0' },
{ id: 4, name: 'Last Obj', otherProp: '78', secondVal: 'test' }
];
var resultArray = objArray.filter(function (d) {
return Object.values(d).indexOf('Object 0') != -1
});
d
方法中filter()
的值从您的对象数组中获取每个对象。 Object.values()
返回与对象中每个keys
关联的值的数组。 indexOf()
实质上检查您要匹配的字符串是否在数组中可用。如果匹配,结果将放入resultArray
,否则忽略它。最终的resultArray
如下所示:
[
{id: 0, name: "Object 0", otherProp: "321", secondVal: "stack"},
{id: 1, name: "O1", otherProp: "Object 0", secondVal: "Overflow"},
{id: 3, name: "Almost There", otherProp: "046", secondVal: "Object 0"}
]
答案 3 :(得分:0)
您可以使用$number = 1234.56;
// let's print the international format for the en_US locale
setlocale(LC_MONETARY, 'en_US');
echo money_format('%i', $number) . "\n";
// USD 1,234.56
和array.filter()
,array.includes()
来执行此操作。
Object.values()