在对象中创建一个具有不同数组元素的新数组[关闭]

Posted

技术标签:

【中文标题】在对象中创建一个具有不同数组元素的新数组[关闭]【英文标题】: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 是为了帮助您调试代码,而不是为您编写代码 【参考方案1】:

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

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

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' ]

【讨论】:

以上是关于在对象中创建一个具有不同数组元素的新数组[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在java中的每个arraylist中创建具有不同类型对象的arraylist数组?

如何在没有初始化和特定数量元素的情况下在 Kotlin 中创建对象数组?

在 C++ 中的类中创建类对象的动态数组

数组常用方法

在javascript中创建对象数组以获得所需的结果[关闭]

比较 2 个对象以在 javascript 中创建一个新的对象数组