我被告知不要for...in在JavaScript中使用数组.为什么不?
我有一个包含对象和数组的嵌套数据结构.如何提取信息,即访问特定或多个值(或键)?
例如:
var data = {
code: 42,
items: [{
id: 1,
name: 'foo'
}, {
id: 2,
name: 'bar'
}]
};
Run Code Online (Sandbox Code Playgroud)
我怎么能访问name第二项items?
给定一个JS对象
var obj = { a: { b: '1', c: '2' } }
Run Code Online (Sandbox Code Playgroud)
和一个字符串
"a.b"
Run Code Online (Sandbox Code Playgroud)
如何将字符串转换为点符号,以便我可以去
var val = obj.a.b
Run Code Online (Sandbox Code Playgroud)
如果字符串只是'a'我可以使用,'a'但这更复杂.我想有一些简单的方法,但它目前逃脱了.
我有以下(嵌套)对象:
obj: { subObj: { foo: 'hello world' } };
Run Code Online (Sandbox Code Playgroud)
我接下来要做的是像这样引用子对象:
var s = obj.subObj;
Run Code Online (Sandbox Code Playgroud)
现在我想要做的是obj从变量中获取对象的引用s.就像是:
var o = s.parent;
Run Code Online (Sandbox Code Playgroud)
这有点可能吗?
我暂时坚持看似简单的JavaScript问题,但也许我只是错过了正确的搜索关键字!
假设我们有一个对象
var r = { a:1, b: {b1:11, b2: 99}};
Run Code Online (Sandbox Code Playgroud)
有几种方法可以访问99:
r.b.b2
r['b']['b2']
Run Code Online (Sandbox Code Playgroud)
我想要的是能够定义一个字符串
var s = "b.b2";
Run Code Online (Sandbox Code Playgroud)
然后使用访问99
r.s or r[s] //(which of course won't work)
Run Code Online (Sandbox Code Playgroud)
一种方法是为它编写一个函数,在字符串上拆分字符串,也可以递归/迭代地获取属性.但是有更简单/更有效的方法吗?在这里的任何jQuery API中有用吗?
我想要做的是按属性排序一些数据.这是我应该努力的例子,但事实并非如此.
HTML部分:
<div ng-app='myApp'>
<div ng-controller="controller">
<ul>
<li ng-repeat="(key, value) in testData | orderBy:'value.order'">
{{value.order}}. {{key}} -> {{value.name}}
</li>
</ul>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
JS部分:
var myApp = angular.module('myApp', []);
myApp.controller('controller', ['$scope', function ($scope) {
$scope.testData = {
C: {name:"CData", order: 1},
B: {name:"BData", order: 2},
A: {name:"AData", order: 3},
}
}]);
Run Code Online (Sandbox Code Playgroud)
结果如下:
- A - > AData
- B - > BData
- C - > CData
......恕我直言应该是这样的:
- C - > CData
- B - > BData
- A - > AData
我错过了什么(这里准备JSFiddle进行实验)?
我有一个链接,在broswer 中打开json数据但不幸的是我不知道如何阅读它.有没有办法使用javascript逗号分隔(csv)格式转换此数据并将其保存在javascript变量中.我刚刚开始学习并且对json完全没有任何线索,如果有人可以为它编写脚本会很棒.
数据似乎如下:
{
"count": 2,
"items": [{
"title": "Apple iPhone 4S Sale Cancelled in Beijing Amid Chaos (Design You Trust)",
"description": "Advertise here with BSA Apple cancelled its scheduled sale of iPhone 4S in one of its stores in China\u2019s capital Beijing on January 13. Crowds outside the store in the Sanlitun district were waiting on queues overnight. There were incidents of scuffle between shoppers and the store\u2019s security …Run Code Online (Sandbox Code Playgroud) 可能重复:
使用字符串键访问嵌套的JavaScript对象
也许标题不够明确,我只是不知道如何指定我正在寻找的东西,我的英语真的很糟糕,抱歉.
我正在尝试创建返回对象值的函数,但也可以使用嵌套对象.例如:
var obj = {
foo: { bar: 'baz' }
};
Run Code Online (Sandbox Code Playgroud)
我想通过将字符串"foo.bar"提供给函数来访问obj.foo.bar的值.
function(obj, path) {
// Path can be "foo.bar", or just "foo".
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我有一个对象,可以是任意数量的级别,可以有任何现有的属性.例如:
var obj = {
db: {
mongodb: {
host: 'localhost'
}
}
};
Run Code Online (Sandbox Code Playgroud)
在那我想设置(或覆盖)属性,如下所示:
set('db.mongodb.user', 'root');
// or:
set('foo.bar', 'baz');
Run Code Online (Sandbox Code Playgroud)
属性字符串可以有任何深度,值可以是任何类型/东西.
如果属性键已存在,则不需要合并作为值的对象和数组.
上一个示例将生成以下对象:
var obj = {
db: {
mongodb: {
host: 'localhost',
user: 'root'
}
},
foo: {
bar: baz
}
};
Run Code Online (Sandbox Code Playgroud)
我怎么才能实现这样的功能呢?
嘿那里,我有一块HTML,我将重复使用(在用户访问期间的不同时间,而不是一次).我认为实现这一目标的最佳方法是创建一个HTML div,隐藏它,并在需要时使用其innerHTML并对几个关键字执行replace().作为示例HTML块...
<div id='sample'>
<h4>%TITLE%</h4>
<p>Text text %KEYWORD% text</p>
<p>%CONTENT%</p>
<img src="images/%ID%/1.jpg" />
</div>
Run Code Online (Sandbox Code Playgroud)
用动态数据替换这些关键字的最佳方法是...
template = document.getElementById('sample');
template = template.replace(/%TITLE%/, some_var_with_title);
template = template.replace(/%KEYWORD%/, some_var_with_keyword);
template = template.replace(/%CONTENT%/, some_var_with_content);
template = template.replace(/%ID%/, some_var_with_id);
Run Code Online (Sandbox Code Playgroud)
感觉就像我选择了一种愚蠢的方式来做到这一点.有没有人对如何以任何方式更快,更智能或更好地做到这一点有任何建议?此代码将在用户访问期间经常执行,有时常常每3-4秒执行一次.
提前致谢.