javascript更改数组中的元素[重复]
Posted
技术标签:
【中文标题】javascript更改数组中的元素[重复]【英文标题】:javascript change elements in array [duplicate] 【发布时间】:2017-07-31 13:07:30 【问题描述】:我有一个对象数组。然后我想添加另一个对象并将其粘贴到我的数组中已经存在的对象上。这意味着新对象的索引应该比我已经存在的对象大一,并且元素的其余索引应该加一。
例如:
-
我有 6 个元素的数组
我的新对象坚持索引 = 2 的现有对象
新对象进入索引 = 3 的数组,所有索引之前大于 2 的对象现在都高一个位置
我尝试从 index = 2 开始将我的数组分成两部分,推送我的新元素,然后再次加入,但我的代码无法正常工作。
for (var i in myArray)
if (myArray[i].name === inheritedRate.inherit)
var tempArr = [];
for (var n = i; n < myArray.length; n++)
tempArr.push($scope.myArray[n]);
myArray.splice(n, 1);
myArray.push(inheritedRate);
myArray.concat(tempArr);
换句话说,我有一个如下所示的数组:
myArray = [
name: "not selected",
name: "not selected",
name: "selected",
name: "not selected",
name: "not selected",
name: "not selected",
]
我想放一个外部元素让它看起来像这样:
myArray = [
name: "not selected",
name: "not selected",
name: "selected",
name: "new element", // inserted
name: "not selected",
name: "not selected",
name: "not selected",
]
【问题讨论】:
1.重新考虑不要为已经索引的数组重新索引而烦恼。 2. 在 google/SO 中搜索重新索引 JSON 或重新索引对象数组 3. 如果仍有问题,请使用<>
sn-p 编辑器显示minimal reproducible example。 PS:如果您真的有一个数组,请使用带有计数器的标准 for 循环,或者使用 foreach 而不是 for in。如果您发布了数据,我们可以提供更好的建议
请添加示例数据和想要的结果。
我的元素实际上是相当大的 json 结构,所以在这里发布它是没有意义的。但是我已经用一个基本示例更新了我的帖子,它的外观以及我想如何更改它
【参考方案1】:
如果我理解正确,那么您的问题是如何在数组中插入和移动元素。您可以使用 splice 方法来做到这一点,该方法具有用于插入元素的可选参数:
这是您的示例所需要的:
var myArray = [
name: "not selected",
name: "not selected",
name: "selected",
name: "not selected",
name: "not selected",
name: "not selected"
];
myArray.splice(3, 0,
name: "new element"
);
console.log(myArray);
【讨论】:
这是假设您事先知道索引(这是一个公平的假设)。但是,对于未来的访问者,[].findIndex()
【参考方案2】:
您可以使用Array#splice
并在元素插入数组后获取索引。
var array = [ name: "not selected" , name: "not selected" , name: "selected" , name: "not selected" , name: "not selected" , name: "not selected" ],
index = 2,
item = name: "new element" ;
array.splice(index + 1, 0, item);
console.log(array);
.as-console-wrapper max-height: 100% !important; top: 0;
【讨论】:
以上是关于javascript更改数组中的元素[重复]的主要内容,如果未能解决你的问题,请参考以下文章