问题标签 [object-properties]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 迭代对象数组属性的值
我使用 Angular InMemoryService 来存储一些假数据。我想将“HashtagDB”属性转换为数组“hashtags”。这个“hashtags”数组应该只包含值,而不是标签,这样我就可以用它来将它显示为 Angular-Material-Chips。
据我了解,HashtagDB 是一个未命名对象的数组属性。那是对的吗?如何转换数组中的数据?
javascript - 无法打印 Json 对象属性
我可以在控制台日志中看到字符串化的对象探测器,但在打印它们时出现错误。以下控制台日志工作正常,我可以在控制台日志中看到所有属性,但如果我打印 metadata.Age 则我的应用程序崩溃。我的对象属性在控制台日志中如下所示。{"Full_name":"John Abraham","Age":"26","Location":"Antwerpen"}
angular - Rxjs - 以可观察值作为值重新映射对象
我有一个像这样的可观察的:
我需要解决内部 observables 并在订阅处理程序中得到类似的东西:
我应该如何解决这个问题?
谢谢。
编辑:我已经想通了,请阅读下文。
似乎没有多少人知道 *Map 运算符曾经有一个称为resultSelector
第二个参数的东西。现在在 rxjs v6 中,你可以用 做同样的事情inner map
,让我告诉你。
javascript - Web Components: Is there an equivalent to attributeChangedCallback for properties?
You're not supposed to put rich data (objects, arrays, functions) in HTML element attributes. Instead, it's suggested to only put rich data in properties (according to the Google custom elements best practices article). I need to run actions when these properties are updated. We have observedAttributes
and attributeChangedCallback
, but there's nothing similar for properties.
Let's say I have a user
prop with things like name
, DoB
, and address
on it. I thought I might be able to trick observedAttributes
by putting a bunk setter a la
Didn't work. return this.user = val
gives an infinite loop.
My only idea at this point is to have a property called _user
that simply gets set to [Object object]
on every change, which triggers the change I actually want. Don't really like that though.
UPDATE: This is what I'm currently doing
In user-info.js
:
In main.js
:
javascript - 如何让 Vue.js 对动态添加的数组属性的更改做出反应?
在 Vue.js 中,我有一个带有动态添加/编辑属性的数据对象,这些属性本身就是数组。例如,属性开始如下:
随着时间的推移,通过各种按钮点击等,vals
可能会如下所示(实际属性名称和值是 100% 动态的,基于多种因素):
随着数组属性(即set1
和set2
)的更改,我希望能够对这些更改做出反应。
例如,我可能会在我的代码中执行以下操作:
但是,当我这样做时,组件并没有更新(我推测是因为我将一个对象推到对象的子数组的末尾;而 Vue.js 似乎没有跟踪这些更改)。
我已经能够通过执行this.$forceUpdate();
上述操作来强制组件具有反应性push
,但我想当对象被推到对象子数组的末尾时,必须有一种更雄辩的方式让 Vue.js 具有反应性。
有谁知道更好的方法来尝试做我想要实现的目标?谢谢你。
javascript - Javascript中使用键或循环访问对象属性的区别
我有一个线性(或单维)对象,在单个记录中具有 1000 多个属性。我必须遍历超过 10000 条记录。有时,单个记录中的对象可能不包含所需的属性。我想知道通过循环对象的所有属性或通过引用它直接检查对象中的键是否可用来遍历它们的更好策略是什么。请检查以下示例以更好地理解这一点。
让我们考虑一个示例场景:
我应该使用哪一种方法,为什么?
javascript - 覆盖对象属性以进行单元测试
我正在使用 Jest 在 Node.js 应用程序上执行单元测试,其中代码源是用 TypeScript 编写的,然后编译成 JavaScript。
在我希望测试的一个类中,导入了一个外部模块并使用了该模块中的一个方法。我想模拟对这个方法的调用,以便只测试我的代码。
但是,当我运行测试时,出现以下错误:
TypeError: Cannot redefine property: methodName
问题是此方法具有以下对象属性:
这configurable: false
就是使它成为一个大问题的原因。我无法在模拟调用之前重新定义属性以使其可写。
以下是相关代码的样子:
测试类
单元测试
到目前为止我尝试了什么
我在测试中添加了以下行:
Object.defineProperty(class['module'], 'methodName', {writable: true});
我将我的模拟调用定义如下:
jest.spyOn(class['module'], 'methodName').mockReturnValue(Promise.resolve());
我将我的模拟调用定义如下:
class.propertyName.externalMethod = jest.fn().mockImplementation((query) => { return Promise.resolve(); });
我试图覆盖我正在调用的属性,如下所示:
class.propertyName = <any> { externalMethod = (param: any) => { return Promise.resolve(); } }
对于这个,我得到了错误TypeError: Cannot assign to read only property externalMethod of object class
,这是有道理的,因为 readable 设置为 false。
但一切似乎都被属性挡住了configurable
。我确信可以做一些事情,因为我可能不是唯一一个想要对导入外部模块的类执行单元测试的人,尽管它是安全的。
所以我的问题是:模拟外部方法的干净且有效的方法是什么?如果这是绝对不可能的,那么在不调用该外部方法的情况下测试我的类的方法是什么?
提前致谢!
javascript - 具有动态属性的假对象
我正在尝试模拟速度会改变的获取请求。
为了在页面中模拟这一点,我只需导入它并在 setInterval 上调用它,
但是速度保持不变,我可以只调用该函数,但我想让对象属性发生变化。这可能吗?
c# - 使用 Typescript 和 Angular 从 Object 中删除属性
我有一个名为 RandomValue 的类和一个名为 WeatherForecast 的类。WeatherForecast 类工作正常并且数据填充表。RandomValues 类/接口似乎返回一个没有属性的对象列表。所以我得到了一个行数正确但没有属性的表。我真的可以在这方面使用一些帮助
这是他们各自的控制器:
两个控制器都返回一个相关类型的数组,模型和控制器似乎工作正常。
现在这是我的打字稿文件
这是我的html文件
WeatherForecasts 是其中包含正确属性的对象列表 RandomValues 是对象列表,但对象内部没有任何属性
javascript - 如何使 console.log(obj) 中的对象属性在 Chrome 中按字母顺序显示?
过去,当我使用 console.log(obj) 在 Javascript 中显示对象的属性时,属性会按字母顺序显示。最近,这种情况似乎发生了变化。我假设新顺序更接近属性在代码中的实际存储方式(尽管我的印象是对象属性一开始就没有“真正的”固定顺序)。
但是,对于大型、复杂的类,按字母顺序显示对于查找我正在寻找的属性非常有用。有没有像以前一样按字母顺序显示属性的选项?
(我还想知道当前属性的“代表”顺序到底是什么,以及它是如何确定的。)