-2
我試圖比較兩個陣列,一個叫values
,另一個叫feeds
。 feeds
數組有多組值,我如何檢查哪個提要包含正確的匹配值集合? 小提琴鏈接:https://jsfiddle.net/v7ussmbb/1/動態比較兩個陣列
我明白了異步的本質,即console.log規則之前循環完成這很好,我只需要比較部分。
我試圖比較兩個陣列,一個叫values
,另一個叫feeds
。 feeds
數組有多組值,我如何檢查哪個提要包含正確的匹配值集合? 小提琴鏈接:https://jsfiddle.net/v7ussmbb/1/動態比較兩個陣列
我明白了異步的本質,即console.log規則之前循環完成這很好,我只需要比較部分。
我會遍歷所有資訊,直到一個所有的規則相匹配,實現我會做這樣的事情:https://jsfiddle.net/canastro/v7ussmbb/4/
// Hold the active feed
var active_feed = '';
// Iterate until one item matches all rules
const found = feeds.some(function(item) {
//console.log('item: ', item);
// Check if all rules match
const match = item.rules.some(function(rule) {
// Get rule to apply by comparing values keys with the rule id
let ruleToApply;
Object.keys(values).some(function(key) {
const isRule = key === String(rule.id);
if (isRule) { ruleToApply = values[key]; }
return isRule;
});
return ruleToApply === rule.value;
});
if (match) { active_feed = item; }
return match;
});
console.log('active_feed: ', active_feed);
要做到這一點我用some
功能:
一些()針對數組中存在的每個元素執行一次回調函數,直到找到回調函數返回真實值( 值在轉換爲布爾值時變爲true)爲止。如果找到這樣一個 元素,some()立即返回true。否則,一些() 返回false。僅對 已分配值的數組的索引調用回調;它不被調用的索引已被刪除或從未被賦值的 。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some
雖然它的工作原理,它只有第一個對象數組的規則比較,https://jsfiddle.net/v7ussmbb/5/ – aman704
行動,你說得對。抱歉。更新了我的答案。 – Canastro