我有一个像以下JavaScript对象:
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
Run Code Online (Sandbox Code Playgroud)
现在我想通过所有回路p
元素(p1
,p2
,p3
...),并得到他们的键和值.我怎样才能做到这一点?
如有必要,我可以修改JavaScript对象.我的最终目标是遍历一些键值对,如果可能的话,我想避免使用eval
.
我在JavaScript中有一个对象:
{
abc: '...',
bca: '...',
zzz: '...',
xxx: '...',
ccc: '...',
// ...
}
Run Code Online (Sandbox Code Playgroud)
我想使用for
循环来获取其属性.我想在部分中迭代它(不是一次所有的对象属性).
使用简单的数组我可以使用标准for
循环:
for (i = 0; i < 100; i++) { ... } // first part
for (i = 100; i < 300; i++) { ... } // second
for (i = 300; i < arr.length; i++) { ... } // last
Run Code Online (Sandbox Code Playgroud)
但是如何用物体做呢?
如何删除这些都是属性undefined
或null
在JavaScript对象?
(问题类似于这个阵列)
可能重复:
迭代对象文字值
我在JavaScript中有对象:
var object = someobject;
Object { aaa=true, bbb=true, ccc=true }
Run Code Online (Sandbox Code Playgroud)
我怎么能用它呢?
object.each(function(index, value)) {
console.log(value);
}
Run Code Online (Sandbox Code Playgroud)
不工作.
有没有办法使用Prototype JavaScript框架迭代对象的每个属性?
情况就是这样:我在JSON中得到一个AJAX响应,如下所示:
{foo: 1, bar: 2, barobj: {75: true, 76: false, 85: true}}
Run Code Online (Sandbox Code Playgroud)
如果我将json响应评估为变量response
,我希望能够遍历response.barobj
对象中的每个属性,以查看哪些索引为true,哪些为false.
原型有两种Object.keys()
,Object.values()
但奇怪似乎没有一个简单的Object.each()
功能!当我迭代一个时,我可以获取Object.keys()和Object.values()的结果并交叉引用另一个,但这是一个黑客,我相信有一个正确的方法来做到这一点!
新的React并试图循环Object属性但React抱怨对象无效React儿童,有人可以给我一些关于如何解决这个问题的建议吗?我添加了createFragment,但不完全确定这需要去哪里或我应采取什么方法?
JS
var tifs = {1: 'Joe', 2: 'Jane'};
var tifOptions = Object.keys(tifs).forEach(function(key) {
return <option value={key}>{tifs[key]}</option>
});
Run Code Online (Sandbox Code Playgroud)
渲染功能
render() {
const model = this.props.model;
let tifOptions = {};
if(model.get('tifs')) {
tifOptions = Object.keys(this.props.model.get('tifs')).forEach(function(key) {
return <option value={key}>{this.props.model.get('tifs')[key]}</option>
});
}
return (
<div class={cellClasses}>
<div class="grid__col-5 text--center grid__col--bleed">
<h5 class="flush text--uppercase">TIF</h5>
<select id="tif" name="tif" onChange={this.handleChange}>
{tifOptions}
</select>
</div>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
控制台出错
If you meant to render a collection of children, use an array instead or wrap the object using …
Run Code Online (Sandbox Code Playgroud) 我一直在测试单选按钮.一切似乎没问题,直到我通过JS lint运行它.我修复了除一个之外的所有错误
出乎意料的'为'
for (i = 0; i < radios.length; i += 1) {
Run Code Online (Sandbox Code Playgroud)
这是我的Javascript:
/*global body,window,document,alert*/
(function () {
"use strict";
var UIlogic;
UIlogic = {
myLoad: function () {
var elems, elemText, btn1, winter, summer, fall, spring, header, btns;
winter = "<div><input type='radio' name='cb' id='cbA' value='0'/><label for='cbA'>Winter</label></div>";
summer = "<div><input type='radio' name='cb' id='cbB' value='1'/><label for='cbB'>Summer</label></div>";
fall = "<div><input type='radio' name='cb' id='cbC' value='2'/><label for='cbC'>Fall</label></div>";
spring = "<div><input type='radio' name='cb' id='cbD' value='3'/><label for='cbD'>Spring</label></div>";
header = "Header";
btns = "<br /><button …
Run Code Online (Sandbox Code Playgroud) 我现在正试图这样做,我想知道是否有一个"最常用"的方法将一个关联数组(它的值)连接成一个由字符分隔的字符串.
例如,我有
var AssocArray = { id:0, status:false, text:'apple' };
Run Code Online (Sandbox Code Playgroud)
连接此对象的元素所产生的字符串将是
"0, false, 'apple'" or "0, 0, 'apple'"
Run Code Online (Sandbox Code Playgroud)
如果我们用","字符加入他们任何想法?谢谢!
我已经重新实现了我自己需要的版本,但我怀疑它已经包含在下划线中,因为它非常简单并且与许多其他函数密切相关.但我想不出应该叫什么.
基本上,我想要的是_.pluck的一个版本,它使用对象并返回一个对象而不是一个数组(及其相关的键).
所以,例如,如果我有一个像这样的对象:
elements: {
steam: {
temperature: 100,
color: 'orange',
state: 'gas'
},
water: {
temperature: 50,
color: 'blue',
state: 'liquid'
},
ice: {
temperature: 0,
color: 'white',
state: 'solid'
}
}
Run Code Online (Sandbox Code Playgroud)
我想打个电话 _.something(elements, 'temperature')
让它回归
{
steam: 100,
water: 50,
ice: 0
}
Run Code Online (Sandbox Code Playgroud)
而不是_.pluck(elements, 'temperature')
返回
[100, 50, 0]
Run Code Online (Sandbox Code Playgroud)
这个转变叫做什么,它是否已经包含在下划线中?我自己用jQuery的每个循环编写了一个快速版本,因为我比jQuery更熟悉jQuery而不是下划线(如下所示),但如果可能的话,我更喜欢使用库中的一个.
$.objPluck = function(obj, key) {
var ret = {};
$.each(obj, function(k, value) {
ret[k] = value[key];
});
return ret;
}
Run Code Online (Sandbox Code Playgroud) 下面代码中的替换器在控制台上写入当前处理的字段名称
let a = { a1: 1, a2:1 }
let b = { b1: 2, b2: [1,a] }
let c = { c1: 3, c2: b }
let s = JSON.stringify(c, function (field,value) {
console.log(field); // full path... ???
return value;
});
Run Code Online (Sandbox Code Playgroud)
但是我想在替换函数中获得字段的完整“路径”(不仅仅是它的名称) - 像这样
c1
c2
c2.b1
c2.b2
c2.b2[0]
c2.b2[1]
c2.b2[1].a1
c2.b2[1].a2
Run Code Online (Sandbox Code Playgroud)
怎么做?