此时我对什么是对象、什么是数组以及什么是 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:啊,是啊……怎么合并。
有很多(非常多)方法可以合并两个数组。这完全取决于您的需要。已排序、已复制、已串联...有一些。
更新:如何制作漂亮的多维数组。
//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/