推送包含某些元素的数据

时间:2015-03-07 02:54:20

标签: javascript arrays

我说下面有一个数据集。如何推送数据,以便推送的唯一数据是1993年的数据。

这就是它 var newdata = []

当我推送数据时

newdata = [
{
    "name": "mary",
    "year": "1993",
    "score": 20
},
{
    "name": "jane",
    "year": "1993",
    "score": 40
}]

//旧数据

 data =
 [
{
    "name": "mary",
    "year": "1993",
    "score": 20
},
{
    "name": "jane",
    "year": "1993",
    "score": 40
},
{
     "name": "eric",
    "year": "1995",
    "score": 20
}
]

2 个答案:

答案 0 :(得分:0)

有三个(显然更多)数组函数对于理解很重要:

  1. array.push(element)在数组末尾添加一个元素
  2. array.filter(...)根据作为回调函数传递的条件减少元素数量。结果是一个新阵列。
  3. array.map (...)根据回调函数更改数组的元素。结果是一个新阵列。
  4. 所以有两种选择:

    data.forEach( function(d) { if (d.year === "1993") newdata.push(d)});
    

    newdata = data.filter(function(d) { if (d.year === "1993") return true; });
    

答案 1 :(得分:0)

http://jsfiddle.net/Lopn90oL/

我认为这是最明显和最简单的方法。

只需迭代您当前的值,如果符合您的条件,请将它们推入新阵列。
这不是一个花哨的解决方案,也不是一个好的风格'您甚至可能想要检查obj.hasOwnProperty('year'),但如果没有更深入的Javascript-Arrays知识,它很容易理解。