jQuery数组乘法

时间:2016-05-18 12:19:49

标签: javascript jquery arrays

我有两个不同的数组。我希望通过将每个元素与另一个数组相乘来求和数组。例如:

function get_total() {
    var i = 0;
    var arr = [];
    var gift_val_len = $('.gift_value').length;
    $('.gift_value').each(function() {
        arr[i++]= parseFloat($(this).val());  // Or this.innerHTML, this.innerText
    });
    var j = 0;
    var arr1 = [];
    $('.gift_number').each(function() {
        arr1[j++]= parseFloat($(this).val());  // Or this.innerHTML, this.innerText
    });
}

现在有两个不同的数组,比如arr1 = [15,20,25],arr2 = [1,3,5],我希望结果像((15 * 1)+(20 * 3)+(25 * 5))。我们怎样才能做到这一点?

4 个答案:

答案 0 :(得分:2)

您可以使用内置的1.741 30654-30654/com.dev.goldunion I/System.out: initializeSip 05-18 20:11:41.741 30654-30654/com.dev.goldunion I/System.out: isApiSupported=true 05-18 20:11:41.751 30654-30654/com.dev.goldunion I/System.out: SipManager=android.net.sip.SipManager@426af938 05-18 20:11:41.751 30654-30654/com.dev.goldunion D/AndroidRuntime: Shutting down VM 05-18 20:11:41.751 30654-30654/com.dev.goldunion W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41692970) 05-18 20:11:41.751 30654-30654/com.dev.goldunion E/AndroidRuntime: FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dev.goldunion/com.dev.goldunion.activity.MainActivity}: java.lang.NullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2227) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2282) at android.app.ActivityThread.access$600(ActivityThread.java:147) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1272) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5265) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:760) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at android.net.sip.SipManager.open(SipManager.java:180) at com.dev.goldunion.util.RegisterSipAccountUtils.initializeSip(RegisterSipAccountUtils.java:49) at com.dev.goldunion.activity.MainActivity.onCreate(MainActivity.java:77) at android.app.Activity.performCreate(Activity.java:5146) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1090) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2191) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2282)  at android.app.ActivityThread.access$600(ActivityThread.java:147)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1272)  at android.os.Handler.dispatchMessage(Handler.java:99)  at android.os.Looper.loop(Looper.java:137)  at android.app.ActivityThread.main(ActivityThread.java:5265)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:525)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:760)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)  at dalvik.system.NativeStart.main(Native Method)  方法使用纯JavaScript(无jQuery)执行此操作:

.map()

这也将对问题中提到的元素进行求和。

注意:数组的长度必须相同,否则代码会崩溃。

答案 1 :(得分:1)

试试这个:

  • get_total内部功能中,使用function mulitply参数调度下面的arr1,arr2

  • 或者将其分配给变量,例如var mult = multiply(arr1,arr2);

function multiply(arr1, arr2) {
  var res = [];
  for (var i = 0; i < arr1.length; i++) {
    res.push(arr1[i] * arr2[i]);
  };
  return res
};

答案 2 :(得分:0)

要将数组缩减为单个值,您可以使用Array Reduce

&#13;
&#13;
// Code goes here

var arr1=[15, 20, 25], arr2=[1, 3, 5];


var result = arr1.reduce(function(previousValue, currentValue, currentIndex) {
  var computedValue = currentValue * arr2[currentIndex];
  return previousValue + computedValue;
});
document.write(result);
console.log(result);
&#13;
&#13;
&#13;

答案 3 :(得分:0)

Array.protototype.reduce()可能是解决此问题的好方法。

function multiplyArrays (array1, array2) {
    return array1.reduce(function(prev, curr, i) {
      return prev + (curr * array2[i]);
    }, 0);
}