[英]How to loop over arrays to combine them into one JavaScript object?
[英]How to combine 2 arrays and label them into a Javascript object?
我有2个数组:
var a = [100, 100, 100, 100, 50, 21.88, 28.13, 21.88, 25.81, 22.58];
var b = ["2012", "2013", "2015", "2012", "2014", "2015", "2015", "2015", "2015", "2015"];
我正在尝试组合2个数组,以便它们与每个值匹配,并为它们提供y和句点的标签。
[{y:100, period:2012},{y:100, period:2013},{y:100, period:2015}, ...]
我一直试图通过以下方式做到这一点:
for(var i = 0; i < a.length; i++){
items = items.concat($.map(a[i].items,function(elem){
return {y:elem.a, period:elem.b};
}));
}
console.log(items)
var newarr = new Array();
for (var i = 0; i < a.length; i++){
newarr[i]={'y': a[i], 'period': b[i]};
}
这就是您所需要的。
使用如下的地图功能。
var a = [100, 100, 100, 100, 50, 21.88, 28.13, 21.88, 25.81, 22.58];
var b = ["2012", "2013", "2015", "2012", "2014", "2015", "2015", "2015", "2015", "2015"];
var fullArr = [];
var i = 0;
fullArr = $.map(a, function(curVal, index, arr){
return [{y:curVal, period:b[index]}];
});
console.log(fullArr);
请在下面检查jsfiddle
只需使用Array#map
不需要forloop
正在使用错误的返回调用。请使用({key:value})
var a = [100, 100, 100, 100, 50, 21.88, 28.13, 21.88, 25.81, 22.58]; var b = ["2012", "2013", "2015", "2012", "2014", "2015", "2015", "2015", "2015", "2015"]; var items = a.map(function(i,k){ return ({y:i,period:b[k]}) }) console.log(items)
您可以使用array#map
const a = [100, 100, 100, 100, 50, 21.88, 28.13, 21.88, 25.81, 22.58], b = ["2012", "2013", "2015", "2012", "2014", "2015", "2015", "2015", "2015", "2015"]; var result = a.map((n,i) => ({y : n , period:b[i]})); console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
const a = [100, 100, 100, 100, 50, 21.88, 28.13, 21.88, 25.81, 22.58], b = ["2012", "2013", "2015", "2012", "2014", "2015", "2015", "2015", "2015", "2015"]; var result = a.map(function (n,i){ return ({y : n , period:b[i]}) }); console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
var a = [100, 100, 100, 100, 50, 21.88, 28.13, 21.88, 25.81, 22.58];
var b = ["2012", "2013", "2015", "2012", "2014", "2015", "2015", "2015", "2015", "2015"];
var items = [];
for(var i = 0; i < a.length; i++){
var item = {
y: a[i],
period: b[i]
};
items.push(item);
}
console.log(items)
您可以使用数组作为键并迭代值。
var a = [100, 100, 100, 100, 50, 21.88, 28.13, 21.88, 25.81, 22.58], b = ["2012", "2013", "2015", "2012", "2014", "2015", "2015", "2015", "2015", "2015"], cols = ['y', 'period'], result = [a, b].reduce(function (r, a, i) { a.forEach(function (b, j) { r[j] = r[j] || {}; r[j][cols[i]] = b; }); return r; }, []); console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
ES6与Object.assign
var a = [100, 100, 100, 100, 50, 21.88, 28.13, 21.88, 25.81, 22.58], b = ["2012", "2013", "2015", "2012", "2014", "2015", "2015", "2015", "2015", "2015"], cols = ['y', 'period'], result = [a, b].reduce((r, a, i) => Object.assign(r, ...a.map((b, j) => ({ [j]: Object.assign(r[j] || {}, { [cols[i]]: b }) }))) , []); console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
您可以通过两种方式执行此操作。 示例如下。
1)jQuery.merge()
将两个数组的内容合并到第一个数组中。
例
var first = [ "a", "b", "c" ];
var second = [ "d", "e", "f" ];
$.merge( $.merge( [], first ), second );
结果
[ "a", "b", "c", "d", "e", "f" ]
2)jQuery.extend()
将两个或更多对象的内容合并到第一个对象中。
例
var object1 = {
apple: 0,
banana: { weight: 52, price: 100 },
cherry: 97
};
var object2 = {
banana: { price: 200 },
durian: 100
};
// Merge object2 into object1
$.extend( object1, object2 );
// Assuming JSON.stringify - not available in IE<8
$( "#log" ).append( JSON.stringify( object1 ) );
结果
{"apple":0,"banana":{"price":200},"cherry":97,"durian":100}
您可以通过简单的方法来实现。
var a = [100, 100, 100, 100, 50, 21.88, 28.13, 21.88, 25.81, 22.58]; var b = ["2012", "2013", "2015", "2012", "2014", "2015", "2015", "2015", "2015", "2015"]; var items = {}; var final = []; for(var i = 0; i < a.length; i++){ items = {}; items.y = a[i] items.period = b[i] final.push(items); }; console.log(final)
您可以使用forin JavaScript数组
var arr1 = [100, 100, 100, 100, 50, 21.88, 28.13, 21.88, 25.81, 22.58], arr2 = ["2012", "2013", "2015", "2012", "2014", "2015", "2015", "2015", "2015", "2015"], finalArr = [],key; for (key in arr1) { finalArr.push({ y: arr1[key], period: arr2[key] }) } console.log(finalArr);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.