繁体   English   中英

如何组合2个数组并将其标记为Javascript对象?

[英]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

DEMO

只需使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM