[英]Javascript search objects by text
我將如何在javascript中編寫一個通用函數來搜索對象數組,從而得到結果。
例如,假設我有一個對象數組。
var arr= [
{a: 1011, b: "abc"},
{a: 2012, b: "abd"},
{a: 2013, b: "cbde"},
{a: 2014, b: "xyz"}
];
搜索(arr,“ 101”)將在數組下面返回
[{a: 1011, b: "abc"}]
和Search(arr,“ bd”)將在數組下面返回
[{a: 2012, b: "abd"},
{a: 2013, b: "cbde"}]
謝謝傑夫的回答。 使用Jeff的答案的解決方案。
function filter(data,txt ) {
return data.filter(e => {
const entries = Object.entries(e);
return entries.some(entry=>entry[1]?entry[1].toString().includes(txt):false);
});
}
const search = "ab";
arr.filter(e => {
const entries = Object.entries(e);
return entries.some( entry =>
entry[0].toString().includes(search) || entry[1].toString().includes(search))
})
我沒有檢查過,但應該接近您的需求。
也許您可以通過屬性和值找到對象。
您可以使用此功能:
function findObjectByText(arr, property, value) {
var result = arr.filter(function(x) {
return x[property] === value;
});
return result;
}
用法:
var test = findObjectByText(arr, "a", 1011);
console.log(test);
結果:
像這樣:
(function() { var arr = [{ a: 1011, b: "abc" }, { a: 2012, b: "abd" }, { a: 2013, b: "cbde" }, { a: 2014, b: "xyz" } ]; function findObjectByText(arr, property, value) { var result = arr.filter(function(x) { return x[property] === value; }); return result; } var test = findObjectByText(arr, "a", 1011); console.log(test); }());
更新:使用通用函數。
function search(arr, value) {
for (var i in arr) {
for (var j in arr[i]) {
if (arr[i][j] === value) {
return arr[i];
}
}
}
return null;
}
結果:
像這樣:
(function() { var arr = [{ a: 1011, b: "abc" }, { a: 2012, b: "abd" }, { a: 2013, b: "cbde" }, { a: 2014, b: "xyz" } ]; function search(arr, value) { for (var i in arr) { for (var j in arr[i]) { if (arr[i][j] === value) { return arr[i]; } } } return null; } var test = search(arr, 1011); console.log(test); }());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.