javascript - 如何合并这些数组/json 对象?

标签 javascript jquery

此时我对什么是对象、什么是数组以及什么是 JSON 有点困惑。有人可以解释两者之间的语法差异吗?以及如何向每个项目添加项目,如何合并每种类型等等?我试图让这个函数从一个 JSON 对象中获取新信息(我认为)并将它与一些新信息合并。然后,此信息将传递给 PHP 脚本进行处理。

这是控制台输出:

{"public":{"0":["el29t7","3bmGDy"]}} 
{"public":"[object Object][object Object]"} 

这是我正在使用的 JS:

/* Helper function to clean up any current data we have stored */
function insertSerializedData(ids, type) {
    // Get anything in the current field
    current_data = $('#changes').val();
    if (!current_data) {
        var data = {};
        data[index++] = ids;
        var final_data = {};
        final_data[type] = data;
        $('#changes').val(JSON.stringify(final_data));
    } else {
        current_data = JSON.parse(current_data);
        var data = {};
        data[index++] = ids;
        // Does the index exist?
        if (type in current_data) {
            var temp_data = current_data[type];
            current_data[type] = temp_data + data;
        } else {
            current_data[type] = data;
        }
        //var extra_data = {};
        //extra_data[type] = data;
        //$.merge(current_data, extra_data);
        $('#changes').val(JSON.stringify(current_data));
    }
    console.log($('#changes').val());
}

想法是,如果键(公钥或其他任何键)尚不存在,则使其指向一个数组数组。如果它确实存在,那么数组数组的数组需要与一个新数组合并。例如:

如果我有

{"public":{"0":["el29t7","3bmGDy"]}}  

我想把它和

合并
["aj19vA", "jO71Ba"] 

那么最终结果将是:

{"public":{"0":["el29t7","3bmGDy"], "1":["aj19vA", "jO71Ba"]}} 

我该怎么做呢?谢谢

最佳答案

很好的两部分问题。总的来说,由于第一个问题的复杂性,第二个问题并不简单。

问题一:

what is an object, what is an array, and what is a JSON. Can someone explain the differences in syntax between the two?

问题二:

and how to add items to each,

问题三:

how to merge each type, and such?

答案一:

这是一个常见的绊脚石,因为 JavaScript 比人们最初预期的更灵活。这是曲线。

In JavaScript everything is an object.

所以这是每个的代码:

//What is an object?
var obj = { };                

var obj2 = { member:"value", myFunction:function(){} }

上面是一个空对象。然后是另一个带有变量和函数的对象。 它们被称为对象文字。

//What is an array 
var array1 = [ ] ;     

var array2 = [0,1,2,3,4];

上面是一个空数组。然后是另一个包含五个整数的数组。

这是导致混淆的曲线。

//Get elements from each of the prior examples.
var x = obj2["member"];
var y = array2[1];

什么??? Object 和 Array 都在用括号访问值? 这是因为两者都是对象。事实证明,这对于编写高级代码来说是一种很好的灵 active 。数组是对象。

//什么是JSON?

JSON 代表 JavaScript 对象表示法。正如您可能已经猜到的那样。一切都是对象...它也是一个 { }; 但它是不同的,因为 - 它用于将数据传输到 - 和 - 来自 JavaScript,而不是实际使用(通常) JavaScript。它是一种文件传输格式。

var JSONObject = {"member":"value"};

与前面示例的唯一区别是引号。本质上,我们将对象文字包装为一个字符串,以便它可以传输到服务器或返回服务器,并且可以非常容易地重新解释。比 XML 更好——因为它不需要自定义解析。只需调用 stringify()ParseJSON()。谷歌一下。重点是……JSON 可以转换为对象文字 JS 对象,而 JS 对象文字可以转换为 JSON,例如,用于传输到服务器或 CouchDB 数据库。

对不起切线。

答案2:

如何为每个添加一个项目?这是曲线不再令人讨厌的地方,开始变得很棒!因为一切都是对象,所以几乎都是一样的。

//Add to an object
var obj {member1:"stringvalue"}
obj.member2 = "addme";    //That is it!

//Add to an array
var array1 [1,2,3,4,5];
array1[0] = "addme";

array[6] = null;

//We shouldn't mix strings, integers, and nulls in arrays, but this isn't a best-practice tutorial.

记住 JS 对象语法,您可能会开始看到一个全新的灵活对象世界。但这可能需要一点时间。

回答3:啊,是啊……怎么合并。

有很多(非常多)方法可以合并两个数组。这完全取决于您的需要。已排序、已复制、已串联...有一些。

Here is the answer !

更新:如何制作漂亮的多维数组。

//Multiple Dimension Array
var array1 = [1,2,3];
var array2 = [3,4];

var arraysinArray = [array1,array2]; //That is it!

这又是一条曲线,它可能在一个对象中:

var obj{
   array1:[1,2,3],
   array2:[3,4]
}

JavaScript 是强大的东西,坚持使用它;它变得很好。 :)

希望对你有帮助, 祝一切顺利! 纳什

关于javascript - 如何合并这些数组/json 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11166651/

相关文章:

javascript - 如何获取json文件的数组javascript?

javascript - 检查数据库后如何在 wordpress functions.php 文件中添加 javascript

javascript - Java 通过下载对话框从 url 下载文件

javascript - AngularJS 的 promise 是缓存

javascript - 对动态填充的对象数组进行排序

javascript - 使内置类 COM 可见

javascript - 选择新 tr 后将所选 tr 颜色改回原样

jquery 循环进度显示不正确的百分比

Javascript .click() 对于具有/相同类的元素不同

javascript - 升级到rails 3.2.9后无法专注于输入