我被告知不要for...in在JavaScript中使用数组.为什么不?
如果我理解正确,ECMAScript 5有类型的filter()原型Array,但不是Object类型.
我如何在JavaScript中实现filter()for Object?
假设我有这个对象:
var foo = {
bar: "Yes"
};
Run Code Online (Sandbox Code Playgroud)
我想写一个filter()适用于Objects的:
Object.prototype.filter = function(predicate) {
var result = {};
for (key in this) {
if (this.hasOwnProperty(key) && !predicate(this[key])) {
result[key] = this[key];
}
}
return result;
};
Run Code Online (Sandbox Code Playgroud)
这在我在下面的演示中使用时有效,但是当我将它添加到使用jQuery 1.5和jQuery UI 1.8.9的网站时,我在FireBug中遇到了JavaScript错误.
Object.prototype.filter = function(predicate) {
var result = {};
for (key in this) {
if (this.hasOwnProperty(key) && !predicate(this[key])) {
console.log("copying");
result[key] = this[key];
}
} …Run Code Online (Sandbox Code Playgroud)我想这个代码:
var arr = [
{ key: 'foo', val: 'bar' },
{ key: 'hello', val: 'world' }
];
var result = arr.map((i) => ([i.key]: i.val)); //something like this
console.log(result);
Run Code Online (Sandbox Code Playgroud)
返回:
{foo: 'bar', hello: 'world'}
Run Code Online (Sandbox Code Playgroud)
这在ECMA6中是否可行?
我正在尝试获取一个嵌套数组并将其转换为一个对象。我不明白为什么undefined当我尝试打印复杂数组时会出现这种情况。
我的目标是改变这个:
var input = [
[
['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk']
],
[
['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager']
]
];
Run Code Online (Sandbox Code Playgroud)
进入这个:
var result = [
{firstName: 'Joe', lastName: 'Blow', age: 42, role: 'clerk'},
{firstName: 'Mary', lastName: 'Jenkins', age: 36, role: 'manager'}
]
Run Code Online (Sandbox Code Playgroud)
到目前为止我有这个。我知道我需要一个嵌套循环,但我无法让我的控制台显示任何过去的内容undefined。
function transformEmployeeData(employeeData) {
var output = {};
var per = {};
// console.log(per);
// console.log(employeeData);
console.log("ED: " + employeeData[0] + "End"); //Expecting the first array in …Run Code Online (Sandbox Code Playgroud) javascript ×4
arrays ×3
object ×3
ecmascript-6 ×1
filtering ×1
for-loop ×1
iteration ×1
jquery ×1
loops ×1