乘法2数组javascript/jquery
我在js中有两个对象数组,如下所示:乘法2数组javascript/jquery,javascript,jquery,html,arrays,Javascript,Jquery,Html,Arrays,我在js中有两个对象数组,如下所示: Array1 0:Object name: "name1" value:7 1:Object name: "name2" value:5 2:Object name: "name3" value:6 Array2 0:Object name: "name1" value:3 1:Object name: "name2"
Array1
0:Object
name: "name1"
value:7
1:Object
name: "name2"
value:5
2:Object
name: "name3"
value:6
Array2
0:Object
name: "name1"
value:3
1:Object
name: "name2"
value:4
2:Object
name: "name3"
value:8
我想创建第三个数组,它将包含来自array1和array2的乘法值的结果(不需要是objects数组-只能包含int值)。这意味着:
Array1 Array2 Array3
value:7 * value:3 = value:21
value:5 * value:4 = value:20
value:6 * value:8 = value:48
你们知道一个简单而好的方法来创建第三个表并在网站上显示它吗?
提前感谢:)您可以使用LINQ的幂函数连接两个结果集,并选择第三列作为两个源列相乘的结果。(就像在SQL中一样) LINQ的JavaScript实现在这里非常方便。查看LinqJS: 这里有一篇关于它的好文章
$Linq看起来也很有前途纯javascript,不需要jQuery:
函数addArrays(arr1、arr2、prop){
var func=函数(当前值){
返回货币[道具];
}
var arr1v=arr1.map(func),arr2v=arr2.map(func),output=[];
arr1v.forEach(功能(当前,i){
输出[i]=arr1v[i]*arr2v[i];
});
返回输出;
}
addArrays([{value:7},{value:5},{value:6}],{value:3},{value:4},{value:8}],“value”)/->[21,20,48]
您可以通过多种方式完成:
选项1:纯JavaScript嵌套循环
只需使用两个嵌套循环,就可以使用纯JavaScript实现。在大型阵列上速度相对较慢,但相当简单
选项2:带有预索引的纯JavaScript循环
您可以对其中一个数组进行预索引,以快速访问它
选项3:使用特殊库
作为替代方案,您可以使用特殊的SQL或LINQ(如其他答案中所述)库,例如,库自动在第二个数组上创建索引,以加快访问速度,避免不必要的循环
性能:您可以在中比较加入10000 x 10000数组(简单嵌套循环和预索引)时所有三种变体的速度。选项2是最快的
请参阅下面的工作代码段以及所有三个选项,或者使用它
(免责声明:我是Alasql的作者)
var Array1=[{name:'name1',value:7},{name:'name2',value:5},{name:'name3',value:6}];
var Array2=[{name:'name1',value:3},{name:'name2',value:4},{name:'name3',value:8}];
// 1. 带有嵌套循环的纯JavaScript选项
var Array3=[];
对于(var i=0;i试试这个
var ar3 = [];
for(var i = 0; i <= array1.length; i++){
var valu = array1[i].value * array2[i].value;
ar3[i] = valu;
}
var ar3=[];
对于(var i=0;i真的,我想知道为什么这里有一个复杂的答案,而Javascript是一种函数式编程语言:
只有一行:
array3= array1.map(function(e,i){return {value : (e.value * array2[i].value)}; }) ;
这个问题是关于数组的简单逐行乘法,而不是关于SQL的两个数组的笛卡尔积。下面是两个数组的SQL积的示例:它给出了9(3乘3)个元素数组,而不是3,但是没有连接操作的键。我完全错误地解释了这个问题-我很抱歉:)我错了!我错过了“名称”问题中的关键字段。我刚刚发布了另一个纯JS和SQL答案的答案。当然,这可以通过LINQ库来完成。再次抱歉!