我有一个动态的json对象,它可以在内部包含不同类型的属性和对象,甚至可以包含平面字符串甚至数组。我制作了一个JavaScript代码,将单个JSON结构转换为HTML表,效果很好,但id希望将其用于动态JSON,因此基本上,我需要遍历JSON树的父级和子级,以了解如何创建此结构HTML表格。
但是在尝试验证孩子是否有对象时确实存在一些问题,例如:(我不想在JSON中添加很多细节)
parent: {
child_1: {
attr1 : value1
},
child_2: {
[{ attribues and values in an array }]
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?我当时正在考虑像这样使用“ typeof”函数:
if (typeof key === 'array') {
// do something
}else{
// do another stuff
}
Run Code Online (Sandbox Code Playgroud)
但是我不相信它会很好,你们能帮我吗?
提前致谢。
这个问题更多的是关于支持和向后兼容性.我测试了以下代码.
function newFunc() {}
newFunc.prototype = {
literal : {
init : function() {
console.log(this);
this.test();
},
test : function() {
console.log('test');
}
}
}
var inst = new newFunc();
inst.literal.init();
Run Code Online (Sandbox Code Playgroud)
这是有效的,虽然我没有在任何其他代码中看到对象文字作为原型.是否有一个原因?这似乎是一种合乎逻辑的编码方式,虽然我不想追求它,如果它有严重的陷阱.
我有一个文本框和旁边的按钮.我想通过Jquery ajax调用webmethod发送文本框的内容并获取相同的大写值并在alert中显示.到目前为止,我有这个代码,但它不起作用.
JAVASCRIPT:
function CallWM()
{
var name = $('#name').val();
RealCallWM(name);
}
function RealCallWM(name) {
$.ajax({
url: 'Register.aspx/UpperWM',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: { name: JSON.stringify(name) },
success: OnSuccess(response),
error: function (response) {
alert(response.responseText);
}
})
};
Run Code Online (Sandbox Code Playgroud)
HTML:
Name: <input id="name" type="text" />
<input id="Button1" type="button" value="button" onclick="CallWM();"/></div>
</form>
Run Code Online (Sandbox Code Playgroud)
WEB方法:
[WebMethod]
public static string UpperWM(string name )
{
var msg=name.ToUpper();
return (msg);
}
Run Code Online (Sandbox Code Playgroud) 我有一个对象数组:
[
{
SalePrice:"18000",
TotalValue:"22500"
ratio:1.25
}
{
SalePrice:"128000",
TotalValue:"212500"
ratio:1.05
}
]
Run Code Online (Sandbox Code Playgroud)
我想把它组成一个数组。喜欢:
[
[18000, 22500, 1.25],
[128000, 212500, 1.05]
]
Run Code Online (Sandbox Code Playgroud)
使用 JS(ES6 可以)。我试过使用类似的东西:
let array = data.map(({SalePrice, TotalValue, ratio}) => SalePrice, TotalValue, ratio).filter(s => s, t = >t, r => r);
Run Code Online (Sandbox Code Playgroud)
但这不起作用,有人可以启发我吗?
使用 JavaScript 应用程序,需要帮助从 ajax 调用收到的响应创建新对象。
接收到的输出是对象数组,示例格式如下:
{
"items": [
{
"id": "02egnc0eo7qk53e9nh7igq6d48",
"summary": "Learn to swim",
"start": {
"dateTime": "2017-03-04T19:00:00+05:30"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
但是,我的组件需要以下格式的 JS 对象:
{
id: "e1",
title: "Express",
start: "Jan 13, 2010",
description: "Jan 13, 2010"
}
Run Code Online (Sandbox Code Playgroud)
以下方法是否正确,请提出更好的方法(如果有)
{
"items": [
{
"id": "02egnc0eo7qk53e9nh7igq6d48",
"summary": "Learn to swim",
"start": {
"dateTime": "2017-03-04T19:00:00+05:30"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
我正在查看其他人正在运行的Javascript代码。声明函数时,为什么参数中会有大括号?例如:
function createUser({username, password, name, weight}, f) {};
Run Code Online (Sandbox Code Playgroud)
这只是强制执行和重命名传入对象中的键吗?这在model.js中,所以也许与验证有关?
后续问题:尝试在计算机上进行编译时,如何获得不出错的信息?在这些奇怪的括号的第一个中,我得到“ SyntaxError:Unexpected token {”。
以下是Max Schwarzmueller在YouTube上为Angular2教程选择的一些代码示例:https://www.youtube.com/playlist? list = PL55RiY5tL51olfU2IEqr455EYLkrhmh3n .
import {Injectable} from "angular2/core";
import {CONTACTS} from "./mock-contact";
@Injectable()
export class ContactService {
getContacts() {
return Promise.resolve(CONTACTS);
}
insertContact(contact: Contact) {
Promise.resolve(CONTACTS)
.then(
(contacts: Contact[]) => contacts.push(contact)
);
}
}
Run Code Online (Sandbox Code Playgroud)
在此示例中,CONTACTS对象是静态JSON.这里没有必要承诺,但用于显示现实世界中服务的使用.
我非常理解它,但我正在尝试将这个想法迁移到我使用可观察而不是承诺的服务中.
我想对CONTACTS数组进行更改,然后让Observable再次发出.然后告诉所有观察者再次做他们的事情.
在一个可观察的东西,这里有什么类似于Promise.resolve?RxJS observables的文档需要大量工作.
如果这只是一个愚蠢的想法,或者有更好的方法,请告诉我.
我已经看过这篇文章,并想知道是否有一种方法可以使用javascript编写一个函数,可以通过使用具有新值的另一个对象来有条件地更新对象的所有属性?
说我有这个对象:
let oldObj = {test1: 'valueTest1',test2: 'valueTest2',test3: 'valueTest3' };
Run Code Online (Sandbox Code Playgroud)
我想使用另一个对象传递的属性更新其值,如下所示:
let newObj = {test2: 'newValue2'}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我只想更新属性"test2".如果我知道我要更新的属性并且我事先知道原始属性,我将使用:
oldObj = {
...(newObj.test1) && {test1: newObj.test1} || {test1: oldObj.test1},
...(newObj.test2) && {test2: newObj.test2} || {test2: oldObj.test2},
...(newObj.test3) && {test3: newObj.test3} || {test3: oldObj.test3},
};
Run Code Online (Sandbox Code Playgroud)
意思是我只会在属性进入新对象时更新值,但当然我必须添加与对象中的属性一样多的条件.
这种方法很好,但它没有推广,所以如果对象有10个属性,我将不得不写出10个条件.
有没有办法编写一个可以有条件地更新属性的函数,这样我就不必编写10个(或更多)条件?
我以这种格式取回JSON:
{key1:"value1", key2:"value2"}
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用JSON :: XS的decode_json方法为我转换它,但它抱怨没有引用键.我可以在JSON :: XS中设置一个选项来忽略这个怪癖吗?我查看了文档,但没有什么明显的.
我有一个带键值对的json对象.我想添加一个变量作为键,但我不知道如何添加.我尝试了一些代码,但它没有设置变量值.我怎么解决这个问题?
var id='second'
var obj={'first': 123, id: 23}
console.log(obj); //{first: 123, id: 23}
Run Code Online (Sandbox Code Playgroud)
但我想成为这样的结果.
{first: 123, second: 23}
Run Code Online (Sandbox Code Playgroud)
请帮我解决这个问题.谢谢