如何添加"名称:"到现有的javascript对象/数组

时间:2013-12-08 17:37:52

标签: javascript arrays push

我真的希望你能帮助我。我正在从webservice中检索一些数据,我已将其格式化并放入一个数组中,但是我需要这个数组最终结束:

Phase = [
{"name": "start"},
{"name": "middle"},
{"name": "end"}
];

现在我很确定它看起来像这样:

Phase{"start", "middle", "end"}

我用这个方式得到了:

$.each(tempPhase, function(i, a){
if inArray(a, Phase === -1) Phase.push(a)});

但如何将“name”:part添加到push();?

我需要.name作为我的函数,我无法真正改变它以不使用.name,因为该函数依赖于其他2个数组以及此函数

我很确定这是一个相当简单的操作,感谢任何帮助。

/////感谢每个人的帮助!!如果我能够将两个答案都标记为最佳答案,因为它们同样有用! :) ////

2 个答案:

答案 0 :(得分:1)

您可以使用js map功能,如下所示,

var Phase = ["start", "middle", "end"]; 

Phase = Phase.map(function(elem){

    return {"name":elem};
});

http://jsfiddle.net/eA23j/

答案 1 :(得分:0)

如果您创建自己的inArray,则几乎无需更改。

function inArray(value, array)
{
    var vName = value.name;
    for(var i = array.length; i--;)
    {
        if(array[i].name == vName) return true;
    }
    return false;
}

http://jsfiddle.net/2fXJ7/

或者更一般(如果你需要它做其他事情):

function objectPropertyInArray(value, array, prop)
{
    var valProp = value[prop];
    for(var i = array.length; i--;)
    {
        if(array[i][prop] == valProp) return true;
    }
    return false;
}