我有两个不同的数组。我希望通过将每个元素与另一个数组相乘来求和数组。例如:
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))。我们怎样才能做到这一点?
答案 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
// 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;
答案 3 :(得分:0)
Array.protototype.reduce()可能是解决此问题的好方法。
function multiplyArrays (array1, array2) {
return array1.reduce(function(prev, curr, i) {
return prev + (curr * array2[i]);
}, 0);
}