Javascript在对象之间移动数组项

时间:2015-05-26 16:03:02

标签: javascript jquery arrays

我有一个数组的对象:

{
    "numbers": [
        {"id":"11111"},
        {"id":"22222"}
    ],
    "letters": [
        {"id":"aaaaa"},
        {"id":"bbbbb"},
        {"id":"33333"}
    ]
}

我想知道如何将 id:33333 字母对象移动到数字对象。

唯一希望我知道如何移动的东西就在其内部"维度"使用.move(old_index, new_index)

任何人都可以帮助我从不同的方面迁移吗?

我知道一种可能的方法是循环遍历数组中的每个项目,查找特定的id,然后将其推送到另一个数组并从之前的数组中删除但是我试图查看是否存在更好的方式。

2 个答案:

答案 0 :(得分:1)

首先,您的数字和字母属性实际上是数组,而不是对象。

由于它们是数组,并且id:33333是字母数组中的最后一个元素,因此您可以使用.pop()将其删除。

我不知道父对象的名称是什么,但您可以执行以下操作:

parentObject.numbers.push(parentObject.letters.pop())

您是否正在寻找更具程序性的方法来执行此操作?如果要移动的元素不是数组中的最后一个元素,该怎么办?让我知道,我会继续。

编辑:

因此,如果您尝试从数组中删除不在开头或结尾的值(即:.shift().pop()),那么您可以使用.splice()来从数组中的任何一点删除元素。

例如:[1,2,3,4,5].splice(0,2)将返回包含已删除元素的新数组:[1,2]

然后,您可以使用.concat()将此拼接数组附加到目标数组,如下所示:

var selectedElements = [1,2,3,4,5].splice(0,2);
var targetArray = ['a', 'b', 'c'].concat(selectedElements);

这会返回targetArray附加选定元素的targetArray = ['a', 'b', 'c', 1, 2],即:

-Filter

答案 1 :(得分:1)

jsFiddle使用纯javascript

function find_consecutive($array, $count) {
    $consecutive = array();
    $previous = null;
    foreach ($array as $value) {
        if ($previous !== null && $value == $previous + 1) {
            $consecutive[] = $value;
            if ($found == $count) {
                return "I found it: " . implode("|", $consecutive) . "<br>";
            }
        } else {
            $consecutive = array($value);
            $found = 1;
        }
        $previous = $value;
        $found++;
    }
}

使用jQuery

从那里

Find object by id in array of javascript objects只需使用相同的javascript代码从一个数组中删除并推送(添加)到另一个数组