【问题标题】:Create a new array with difference of array elements in an object [closed]在对象中创建一个具有不同数组元素的新数组[关闭]
【发布时间】:2021-08-12 15:47:24
【问题描述】:

我有这个对象,里面有 2 个数组,如何创建一个新数组,其中 array1 中的每个元素与 array2 中的对应元素不同。 例如这里的结果数组应该是

["$1", "$5", "$6"]
{
  "2": ["$3","$4","$8"], 
  "3": ["$4","$9","$2"]
}

【问题讨论】:

  • 你的尝试在哪里?请记住,SO 是为了帮助您调试代码,而不是为您编写代码

标签: javascript jquery arrays json object


【解决方案1】:

您可以使用map轻松实现此结果

  1. 首先,您需要从两个数组中获取相同索引处的元素
  2. 将它们转换为Number 类型
  3. 获取差值,但请务必使用Math.abs 获取绝对值。
  4. 通过在其前添加$ 来返回结果。

const obj = {
  "2": ["$3", "$4", "$8"],
  "3": ["$4", "$9", "$2"],
};

const result = obj["2"].map((el, i) => {
  // First Step
  const first = obj["2"][i];
  const second = obj["3"][i];

  // Second Step
  const regex = /\d+/;
  const firstNumber = parseInt(first.match(regex));
  const secondNumber = parseInt(second.match(regex));
  
  // Third Step
  const diff = Math.abs(firstNumber - secondNumber);
  
  // Fourth step
  return `$${diff}`;
});

console.log(result);

【讨论】:

    【解决方案2】:
    const object = {
      "2": ["$3","$4","$8"], 
      "3": ["$4","$9","$2"]
    }
     
    const keys = Object.keys(object)
     
    const keysReversed = keys.reverse()
     
    const differenceArray = []
    
    const length = object[keysReversed[0]].length
    
    for (let index = 0; index < length; index++) {
        const element1 = object[keysReversed[0]][index].replace('$', '');
        const element2 = object[keysReversed[1]][index].replace('$', '');
        differenceArray.push(`$${Math.abs(element1 - element2)}`)
    }
    
    console.log(differenceArray) // [ '$1', '$5', '$6' ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 2018-08-20
      • 2015-05-04
      • 1970-01-01
      • 1970-01-01
      • 2019-12-15
      • 2021-07-31
      相关资源
      最近更新 更多