[英]Filter JavaScript Object by value
我有這個對象數組:
var result = [
{
appAddress:"127.0.0.1",
name:"AppServer1",
dbConnection:""
},
{
appAdress:"",
name:"DBServer1",
dbConnection:"Server=.;Database=master;Integrated Security=SSPI"
}];
現在,我只需要獲取名稱值(到數組中),其中appAddress不為空。 我嘗試了array.filter()和$ .map(),但是這些方法似乎都不能滿足我的要求。
這是我嘗試的:
var appServers = $.map(result, function (val, key) {
return (key == 'appAddress' && val.length > 0) ? key : null;
});
和
var appServers = result.filter(function (entry) {
return entry['displayName'];
});
首先,您的對象定義是錯誤的。 您需要使用:
而不是=
。
接下來,您可以使用簡單的for循環執行此操作:
var output = [];
for (var i = 0; i < result.length; i++) {
var item = result[i];
if (item.appAddress) output.push(item.name);
}
您可能要做的一件事是
var names = result.filter(
function (t) {
return t.appAddress != "";
}).map(
function (t) {
return t.name;
});
您可以像這樣使用reduce:
var result = [ { appAdress: "127.0.0.1", name: "AppServer1", dbConnection: "" }, { appAdress: "", name: "DBServer1", dbConnection: "Server=.;Database=master;Integrated Security=SSPI" }]; var addresses = result.reduce(function (acc, it) { if (it.appAdress) { acc.push(it.name); } return acc; }, []); console.log(addresses);
Please check the result in console.
對於過濾,可以使用Array
filter
和map
方法。 請參見以下示例。
var result = [{ appAdress: "127.0.0.1", name: "AppServer1", dbConnection: "" }, { appAdress: "", name: "DBServer1", dbConnection: "Server=.;Database=master;Integrated Security=SSPI" }]; // First Solution var out = result.filter(function(obj) { return obj.appAdress; }).map(function(obj) { return obj.name; }) // Second Solution var namesArr = []; result.forEach(function(obj) { if (obj.appAdress) { namesArr.push(obj.name); } }); document.querySelector('#out').innerHTML = JSON.stringify(out, undefined, 4); document.querySelector('#out2').innerHTML = JSON.stringify(namesArr, undefined, 4);
First Solution <pre id="out"></pre> <hr/> Second Solution <pre id="out2"></pre>
您的result
數組中定義的對象無效。 對象值寫為name:value
對(用冒號分隔)。
嘗試這個:
var result = [{ appAdress: "127.0.0.1", name: "AppServer1", dbConnection: "" }, { appAdress: "", name: "DBServer1", dbConnection: "Server=.;Database=master;Integrated Security=SSPI" }]; var resultArr = $.map(result, function(val, i) { if (val.appAdress.length > 0) return val.name; }); console.log(resultArr);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
在JSFiddle上運行,或閱讀有關jQuery.map()的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.