动态比较两个数组

时间:2017-02-26 15:49:23

标签: javascript jquery arrays

我试图比较两个数组,一个名为values,另一个名为feedsfeeds数组有多组值,如何检查哪个Feed包含要匹配的正确值集? 小提琴链接:https://jsfiddle.net/v7ussmbb/1/

我理解异步性质,即循环完成之前的console.log规则,这很好,我只需要比较部分。

1 个答案:

答案 0 :(得分:0)

我会迭代你的所有Feed,直到匹配所有规则,以实现我会做这样的事情: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函数:

  

some()为每个元素执行一次回调函数   数组,直到找到一个回调返回truthy值的数组(a   转换为布尔值时变为true的值)。如果这样的话   找到element,some()立即返回true。否则,一些()   返回false。仅对数组的索引调用回调   分配了价值;对于已经存在的索引,不会调用它   已删除或从未分配过值。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some