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

时间:2017-09-14 09:31:37

标签: javascript arrays

我有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)

9 个答案:

答案 0 :(得分:1)

var newarr = new Array();
for (var i = 0; i < a.length; i++){
    newarr[i]={'y': a[i], 'period': b[i]};
}

这就是你所需要的一切。

答案 1 :(得分:1)

使用如下的地图功能。

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

答案 2 :(得分:0)

只需使用Array#map。无需forloop。您使用了错误的回复电话。使用({key:value})

&#13;
&#13;
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)
&#13;
&#13;
&#13;

答案 3 :(得分:0)

您可以使用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; }

答案 4 :(得分: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)

答案 5 :(得分:0)

您可以使用数组作为键并迭代值。

&#13;
&#13;
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);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
&#13;
&#13;

ES6与Object.assign

&#13;
&#13;
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);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
&#13;
&#13;

答案 6 :(得分: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}

答案 7 :(得分: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 = {};
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)

答案 8 :(得分:0)

  

您可以使用 forin JavaScript数组

&#13;
&#13;
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);
&#13;
&#13;
&#13;