两个相同长度的数组中的元素均为 Number 类型如何相加

摘要:今天在渲染Echarts数据,就把工作中的小细节总结下。以前没做Echarts开发的时候,很少用到两个数组中的数字相加,那就利用空闲时间来想想有哪些方法可以实现两个数组中的数字相加呢?

需求:

1、后台传给我的数据如下:

2、我需要将data中faultCautionArray数组数据与normalCautionArray数组数据相加

思路:

1、方法一:利用for循环遍历数组然后相加(但是只里面需要注意几个问题)

 如果没有写if条件判断会出现问题,当两个数组长度不相同的时候可能会出现NAN(注意是可能哦),上代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
        <script>
            var a = [5, 6, 7, 8,1];
            var b = [-1, 2, -3, -4];
            function getResult(a, b) {
                var c = [];
                for(var i = 0; i < a.length; i++) {
                    c[i] = a[i] + b[i];
                }
                console.log(c)
            }
          getResult(a, b);
        </script>
	</body>
</html>

控制台打印的结果为:[4, 8, 4, 4, NaN]。但是如果 a = [5, 6, 7, 8],b = [-1, 2, -3, -4,1];就不会打印出NAN结果。正确的写法如下

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
        <script>
            var a = [5, 6, 7, 8,1];
            var b = [-1, 2, -3, -4];
            function getResult(a, b) {
                var c = [];
                if (a.length === b.length) {
                    for(var i = 0; i < a.length; i++) {
                    c[i] = a[i] + b[i];
                    }
                }
                return c;
            }
           getResult(a, b);
        </script>
	</body>
</html>

2、方法二:代码如下

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
        <script>
            var fault = result.data.faultCautionArray; // 第一个数组,如[1,2,1]
            var normal = result.data.normalCautionArray; // 第二个数组,如[2,3,1]
            console.log(fault);
            console.log(normal);
            let faultData = fault.map(function(v, i) { // 数组和,如[3,5,2]
                return v + normal[i];
            });
            console.log(faultData)
        </script>
	</body>
</html>

打印结果如下:

补充知识:map相关

(1)红宝书(JavaScript高级程序设计)中介绍的比较简单

      map属于ECMAScript为数组定义的5个迭代方法之一。由于介绍比较简单,我就在网上搜了下

(2)在菜鸟教程中说map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。map() 方法按照原始数组元素顺序依次处理元素。注意: map() 不会对空数组进行检测。不会改变原始数组。

(3)在MDN中关于array的map介绍比较多,接下来我们来看看吧(MDN中关于map的详细介绍以及讲解

          map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。看下示例代码(一)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
        <script>
            var array1 = [1, 4, 9, 16];
            // pass a function to map
            const map1 = array1.map(x => x * 2);
            console.log(map1);
            // expected output: Array [2, 8, 18, 32]
        </script>
	</body>
</html>

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用整型数组类实现两个任意长度的整数的大小对比的示例代码: ```java public class BigInt { private int[] digits; private int size; public BigInt(String number) { size = number.length(); digits = new int[size]; for (int i = 0; i < size; i++) { digits[i] = Character.getNumericValue(number.charAt(i)); } } public boolean isGreaterThan(BigInt other) { if (size > other.size) { return true; } else if (size < other.size) { return false; } else { for (int i = 0; i < size; i++) { if (digits[i] > other.digits[i]) { return true; } else if (digits[i] < other.digits[i]) { return false; } } return false; } } } ``` 在上面的代码中,我们定义了一个 BigInt 类,它包含一个整型数组 digits 和一个整数 size,digits 数组用来存储输入的大整数的每一位数字,size 表示这个大整数的位数。 我们使用构造函数来初始化 BigInt 类的对象,构造函数接受一个字符串参数,字符串中的每个字符都被转换成整数并存储到 digits 数组中。 我们还定义了一个 isGreaterThan 方法,用于比较两个 BigInt 类对象的大小。如果当前对象的 size 大于另一个对象的 size,则当前对象大;如果当前对象的 size 小于另一个对象的 size,则当前对象小;如果两个对象的 size 相等,则从高位到低位逐位比较,如果当前对象的某一位数字大于另一个对象的相应位,则当前对象大;如果当前对象的某一位数字小于另一个对象的相应位,则当前对象小;如果两个对象的所有数字都相等,则认为它们相等。 例如,我们可以使用以下代码创建两个 BigInt 类对象,并比较它们的大小: ```java BigInt num1 = new BigInt("1234567890"); BigInt num2 = new BigInt("9876543210"); if (num1.isGreaterThan(num2)) { System.out.println("num1 is greater than num2"); } else { System.out.println("num1 is not greater than num2"); } ``` 输出结果将为 "num1 is not greater than num2",因为 num2 的 size 大于 num1 的 size。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值