在对象中创建一个具有不同数组元素的新数组[关闭]
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 中创建对象数组?