我正在重复一个对象数组,我希望循环中的变量只能引用每个对象的一个属性.
简化数据示例:
var data = [
{
'name': {
'first': 'John',
'last': 'Johnson'
}
'age': 45
},
{
'name': {
'first': 'Larry',
'last': 'Wilson'
}
'age': 45
}
]
Run Code Online (Sandbox Code Playgroud)
我可以:
<div ng-repeat="person in data">{{ person.name.first }}</div>
但我更喜欢做的只是专注于我正在使用的对象的唯一部分,并执行以下操作:
<div ng-repeat="person.name in data as name">{{ name.first }}</div>
但这似乎不起作用 - 这目前可能吗?
如果我有一个没有模板的AngularJS指令,并且我希望它在当前作用域上设置属性,那么最好的方法是什么?
例如,一个计算按钮点击次数的指令:
<button twoway="counter">Click Me</button>
<p>Click Count: {{ counter }}</p>
Run Code Online (Sandbox Code Playgroud)
使用指令将点击计数分配给双向属性中的表达式:
.directive('twoway', [
'$parse',
function($parse) {
return {
scope: false,
link: function(scope, elem, attrs) {
elem.on('click', function() {
var current = scope.$eval(attrs.twoway) || 0;
$parse(attrs.twoway).assign(scope, ++current);
scope.$apply();
});
}
};
}
])
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?从我所读到的,一个孤立的范围将是矫枉过正,但我需要一个儿童范围?是否有更简洁的方法来回写指令属性中定义的范围变量而不是使用$parse.我觉得我让这个太难了.
Full Plunker 在这里.
我有基于json的数据结构,对象包含嵌套对象.为了访问特定的数据元素,我一直在链接对象属性的引用.例如:
var a = b.c.d;
Run Code Online (Sandbox Code Playgroud)
如果未定义b或bc,则会因错误而失败.但是,我希望得到一个值,如果它存在,否则只是未定义.在不检查链中的每个值是否存在的情况下,最好的方法是什么?
我想保持这种方法尽可能通用,所以我不必添加大量的辅助方法,如:
var a = b.getD();
Run Code Online (Sandbox Code Playgroud)
要么
var a = helpers.getDFromB(b);
Run Code Online (Sandbox Code Playgroud)
我也想尝试避免try/catch构造,因为这不是一个错误所以使用try/catch似乎是错误的.这合理吗?
有任何想法吗?
我遇到了需要从服务器访问javascript对象的情况.服务器返回函数或对象的字符串名称,并且基于其他元数据,我将以不同方式评估对象.
最初我正在评估(eval([string])),一切都很好.最近我更新了函数,以免eval安全性让人高枕无忧,我遇到了命名空间对象/函数的问题.
具体来说,我尝试eval([name])用a 替换a window[name]来通过全局对象vs的方括号语法访问对象eval.
但是我遇到了命名空间对象的问题,例如:
var strObjName = 'namespace.serviceArea.function';
// if I do
var obj = eval(strObjName); // works
// but if I do
var obj = window[strObjName]; // doesn't work
Run Code Online (Sandbox Code Playgroud)
任何人都可以提出一个很好的解决方案,以避免使用eval命名空间字符串?
您如何获得对象的给定子节点的JSON路径?
例如:
var data = {
key1: {
children: {
key2:'value',
key3:'value',
key4: { ... }
},
key5: 'value'
}
Run Code Online (Sandbox Code Playgroud)
给出了一个引用key4的变量.现在我正在寻找绝对路径:
data.key1.children.key4
Run Code Online (Sandbox Code Playgroud)
有没有办法在JS中完成这项工作?
先感谢您.
说我有 var input = {'name':'john'}
我愿意
input['name'] = 'James'
它变成了var input = {'name':'john'}但我可以用点传递值来访问嵌套属性吗?
喜欢
var input = {"name":"john","grades":"{english:"A","math":"C"}"}
我无法通过执行input["grades.math"].
任何人都可以向我展示以下问题的迭代解决方案吗?我递归地解决了它,但是在迭代解决方案上挣扎.(Facebook技术访谈问题)
Input: [1, {a: 2}, [3], [[4, 5], 6], 7]
Output: [1, {a: 2}, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
解决方案必须适用于第n个嵌套数组元素(即如果有人修改了上面示例中的数组值/位置,它仍然可以工作)
递归解决方案:
var flatten = function(input) {
var result = [];
input.forEach(function(element) {
result = result.concat(Array.isArray(element) ? flatten(element) : element);
});
return result;
}
Run Code Online (Sandbox Code Playgroud) 我有一堆对象属性以点分隔的字符串形式出现"availability_meta.supplier.price",我需要为其分配相应的值record['availability_meta']['supplier']['price']等等.
并非所有东西都是3级深度:许多只有1级深度,而且许多深度超过3级.
有没有一种很好的方法在Javascript中以编程方式分配?例如,我需要:
["foo.bar.baz", 1] // --> record.foo.bar.baz = 1
["qux.qaz", "abc"] // --> record.qux.qaz = "abc"
["foshizzle", 200] // --> record.foshizzle = 200
Run Code Online (Sandbox Code Playgroud)
我想我可以一起破解某些东西,但我没有任何好的算法,所以会很感激建议.我正在使用lodash,如果它有用,并对其他可以快速完成此工作的库开放.
编辑它在后端并且不经常运行,因此没有必要优化大小,速度等.实际上代码可读性对于未来的开发者来说将是一个加分.
编辑2这与引用的副本不同.也就是说,我需要能够为同一个对象多次执行此分配,并且"重复"答案将每次只覆盖子键.请重新开启!
我有一个字符串引用我的一个范围值,如下所示:
var reference_string = "form.name";
Run Code Online (Sandbox Code Playgroud)
我想为它引用的对象赋值:
$scope.form.name = 'newvalue';
Run Code Online (Sandbox Code Playgroud)
环顾四周,我找到了两种可能的解决方案:使用普通JS或使用angular $ parse函数.
但是,似乎$ parse函数只返回值.我可以这样做,以便我可以分配一个新值吗?
即.我想做点什么
var reference_string = "form.name";
var reference = getReference($scope, reference_string); // ideally using an angular in-built function like $parse
reference = 'newvalue'; // should have the same effect as $scope.form.name = 'newvalue';
Run Code Online (Sandbox Code Playgroud) 大家好 Stackoverflow,我正在尝试从 API 获取数据并将其导入到 React js 中的数据网格中。
\n以下是我从 API 获取的数据格式。
\n{data: Array(200)}\ndata\n: \n(200) [{\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, {\xe2\x80\xa6}, …Run Code Online (Sandbox Code Playgroud) javascript ×9
angularjs ×3
arrays ×2
ecmascript-6 ×1
eval ×1
function ×1
json ×1
lodash ×1
material-ui ×1
namespaces ×1
node.js ×1
object ×1
reactjs ×1
xpath ×1