我有一些我正在處理的角碼。目標是儘可能少使用角度1.x功能,因爲這將很快得到重構。將一個數組與一個對象數組進行比較的javascript
我比較陣列
let subscription = [
"Cinemax Subscription",
"Disney Subscription",
"Encore Subscription",
"Epix Subscription",
"HBO Subscription",
"MLB Subscription",
"NBA Subscription",
"NHL Subscription",
"Division"
]
到對象的數組具有容納另一個陣列的密鑰值的關係。
let profiles = [
{
name:"1+ Adults in Household",
qualifiers: [
{
name: 'Number of adults in the household'
}
]
},
{
name: '75k',
qualifers: [
{
name: 'Division'
},
{
name: 'Income'
}
]
},
{
name: 'Time Warner',
qualifers: [
{
name: 'Division'
}
]
}
]
我在索引和循環中遇到困難。
let = profilesFiltered = [];
最初我試圖用濾波器和angular.for 每個比較陣列。
let filteredProfiles = subscription.filter(function (src) {
angular.forEach(profiles, function (key, index) {
if(src === key.qualifiers[index].name) {
profilesFiltered.push(key);
}
})
});
我if語句裏面看到的是
key.qualifiers[index].name // 'Number of adults in the household'
開出正確相較於
subscription[0] // however, it will continue to 1 on the first object which isn't there.
我看到它是如何開始失效。但我不確定如何正確地循環訪問** profiles **數組中的限定符。
期望的結果是那些房子司這是索引中的最後一個數組項目。
profilesFiltered = [
{
name: '75k',
qualifers: [
{
name: 'Division'
},
{
name: 'Income'
}
]
},
{
name: 'Time Warner',
qualifers: [
{
name: 'Division'
}
]
}
]
在這一點上任何反饋非常讚賞。
感謝
您的問題是,至少對我來說,還是很不清楚。你的代碼有很多錯誤。例如,你在過濾函數中沒有返回一個布爾值。所以你的filteredProfiles將永遠是空的。你沒有運行'qualifiers'數組 - 在第一個btw後對象中拼寫錯誤 - 你只是在尋找第一個限定符。等等。你可以提供一個小例子來自我解釋你想要達到的目標。 –