此时我对什么是对象、什么是数组以及什么是 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/
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我有多个ActiveRecord子类Item的实例数组,我需要根据最早的事件循环打印。在这种情况下,我需要打印付款和维护日期,如下所示:ItemAmaintenancerequiredin5daysItemBpaymentrequiredin6daysItemApaymentrequiredin7daysItemBmaintenancerequiredin8days我目前有两个查询,用于查找maintenance和payment项目(非排他性查询),并输出如下内容:paymentrequiredin...maintenancerequiredin...有什么方法可以改善上述(丑陋的)代
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
我的代码目前看起来像这样numbers=[1,2,3,4,5]defpop_threepop=[]3.times{pop有没有办法在一行中完成pop_three方法中的内容?我基本上想做类似numbers.slice(0,3)的事情,但要删除切片中的数组项。嗯...嗯,我想我刚刚意识到我可以试试slice! 最佳答案 是numbers.pop(3)或者numbers.shift(3)如果你想要另一边。 关于ruby-多次弹出/移动ruby数组,我们在StackOverflow上找到一
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack