在现有数组javascript中推送数据

时间:2015-05-06 07:58:49

标签: javascript arrays json push

我有一个数组:

var array = [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]

我需要从另一个数组推送数据以获得此结果:

[7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, {
            y: 26.5,
            marker: {
                symbol: 'url(../sun.png)'
            }
        }, 23.3, 18.3, 13.9, 9.6]

有人可以解释一下array_push等价于获得这个结果吗?

感谢您的支持

5 个答案:

答案 0 :(得分:2)

此功能可以帮助您:

function replaceItem (array, item, newItem) {
   for(var index in array) {
      if(array[index]==item) {
          array.splice(index, 1, newItem);
      }
   }
}

不,你只需要像这样打电话给你:

replaceItem(array, 25.2, { y: 26.5, marker: { symbol: 'url(../sun.png)' } });

注意函数没有返回任何内容,它直接替换在数组上,因为在javascript中数组是通过它的引用传递的。

现在让我向您解释所有数组插入函数如何在javascript上运行:

Array.prototype.push:

这个在数组的末尾添加一个项目:

a = [1,2,3]
a.push(4); // a ==> [1,2,3,4]

相反,Array.prototype.pop

var lastItem = a.pop();
// lastItem == 4
// a ==> [1,2,3]

<强> Array.prototype.unshift:

这个在数组的开头添加一个元素:

a = [1,2,3];
a.unshif(0); // a ==> [0,1,2,3]

相反的是Array.prototype.shift

var firstItem = a.shift();
// firstItem == 0
// a ==> [1,2,3]

<强> Array.prototype.splice

这个删除了一些项目,并用作为参数给出的新项目替换它们。参数是:( startingIndex, numberOfItemsToReplace, [, newItems ])并返回从数组中删除的项目

a = [1,2,3];
removedItems = a.splice(0,2,3,3,3);
// removedItems ==> [1, 2]
// a ==> [3, 3, 3, 3]

答案 1 :(得分:2)

这可能会有所帮助:

array.splice(array.indexOf(26.5),1,{y: 26.5,marker: {symbol: 'url(../sun.png)'}});

找到26.5的位置,并将其替换为您想要的对象。

答案 2 :(得分:2)

你正在寻找这样的代码吗?

var a=[7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2,26.5, 23.3, 18.3, 13.9, 9.6];
    var b={y: 26.5,
    marker: {
        symbol: 'url(../sun.png)'
    }};
    a.splice(7,1,b);

    alert(a.toSource());

拼接(索引 howmanytoremove item )在索引处添加您的项目,删除 howmanytoremove

答案 3 :(得分:1)

array.push(5);

数组是一个对象。所以只需使用它的方法push()

如果要插入它,请使用slice() - 方法:

var value= "whatever";
var insertIndex = 3;
array.slice(insertIndex, 0, value);

答案 4 :(得分:1)

试试这个:

var data = [78, 89, 89, 346];
var obj = {
  'name': 'Gholi'
};

data.push(obj);

console.log(data);