如何将对象的每个值放入数组中

时间:2015-10-10 10:37:59

标签: javascript jquery arrays

我有两个对象:

<link href="http://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet"/>
<table class="table table-striped">
    <thead>
    <tr>
        <th>Make</th>
        <th>Model</th>
        <th>Color</th>
        <th>Year</th>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td class="filterable-cell">Ford</td>
        <td class="filterable-cell">Escort</td>
        <td class="filterable-cell">Blue</td>
        <td class="filterable-cell">2000</td>
    </tr>
    <tr>
        <td class="filterable-cell">Ford</td>
        <td class="filterable-cell">Escort</td>
        <td class="filterable-cell">Blue</td>
        <td class="filterable-cell">2000</td>
    </tr>
            <tr>
        <td class="filterable-cell">Ford</td>
        <td class="filterable-cell">Escort</td>
        <td class="filterable-cell">Blue</td>
        <td class="filterable-cell">2000</td>
    </tr>
     <tr>
        <td class="filterable-cell">Ford</td>
        <td class="filterable-cell">Escort</td>
        <td class="filterable-cell">Blue</td>
        <td class="filterable-cell">2000</td>
    </tr>
    </tbody>

我需要将对象的属性值放入一个数组中。所以,我是通过迭代每个对象来做到这一点,但接下来,将它推入一个数组会返回两个分开的...

a = {A: 1, B: 2};
a = {C: 3, D: 4};

怎么做?可能吗? 我需要这个:$.each(a, function(_key, _val) { var arr = []; arr.push(_val); console.log(arr); });

4 个答案:

答案 0 :(得分:1)

您每次都在初始化每个内部的arr。试试这个:

var arr = [];
$.each(a, function(_key, _val) {
    arr.push(_val);
    console.log(arr);
});

这是一个小提琴:

Sample file

var a = {A: 1, B: 2};
var b = {C: 3, D: 4};

function join(source, target) {
    $.each(source, function(_key, _val) {
        target.push(_val);
    });
}

var arr = [];
join(a, arr);
join(b, arr);

$("#result").html(JSON.stringify(arr));

您也可以尝试使用.concat。以下是w3schools的一个例子:

var hege = ["Cecilie", "Lone"];
var stale = ["Emil", "Tobias", "Linus"];
var children = hege.concat(stale);

see this answer

这是你在找什么?

答案 1 :(得分:0)

不要在$.each函数中初始化数组。它会在每次$ .each函数调用时分配新数组,因此最终会得到arr变量中的最后一个数组元素。

a = {
  A: 1,
  B: 2
};
b = {
  C: 3,
  D: 4
};
var arr = [];

function pushToArray(a) {
  $.each(a, function(_key, _val) {
    arr.push(_val);
  });
}
pushToArray(a);
pushToArray(b);
console.log(arr);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

确保不要定义具有相同名称的不同对象否则最后将最后一个对象分配给该变量。

答案 2 :(得分:0)

下面概述的方法首先创建两个单独的数组,一个来自a,另一个来自b,然后将它们连接在一起(在jQuery Array#map方法的帮助下。)

a = {A: 1, B: 2};
b = {C: 3, D: 4};

var arrayFromA = $.map(a, function(value, index) {
    return [value];
});

var arrayFromB = $.map(b, function(value, index) {
    return [value];
});

finalArray = arrayFromB.concat(arrayFromA);

答案 3 :(得分:0)

您可以使用Object.assign

来实现此目的
    var a = {A: 1, B: 2};
    var b = {C: 3, D: 4};
    var copy = Object.assign(a, b);
    var result =[];
    for(var i in copy){
       result.push(copy[i]);
    }
console.log(result);

感谢。