-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