相关疑难解决方法(0)

JavaScript 中的对象是否有唯一标识符?

是否有一个可搜索的、唯一的标识符(即密钥、uid 等... - 请原谅可能对专有术语的滥用)来区分此示例中的 ob1 和 ob2?

var makeObject = function() {
return {example: 'property'};
};

var ob1 = makeObject();
var ob2 = makeObject();
Run Code Online (Sandbox Code Playgroud)

现在我们知道:

ob1 === ob2;  // false
Run Code Online (Sandbox Code Playgroud)

除了这种布尔不等式区别之外,是否有较低级别的唯一字符被临时分配给 ob1 和 ob2?如果是这样,这些独特的角色可以通过控制台访问吗?

编辑: 如何确定两个 JavaScript 对象相等?真正涉及到我的问题的差异化方面,所以谢谢你。我觉得我的问题的另一部分更多地关注 ob1 与 ob2 相比的机器级别差异(除了实用性和/或用户可访问性),我相信“内存中的不同位置”肯定会回答这个问题。

javascript object uniqueidentifier

10
推荐指数
1
解决办法
7122
查看次数

如何测试两个对象是否与JavaScript相同?

我需要一个功能:

function isSame(a, b){
} 
Run Code Online (Sandbox Code Playgroud)

其中,如果a和b相同,则返回true.
,我试过return a === b,但我发现[] === []会返回false.
我期望这个功能的一些结果可以给出:

isSame(3.14, 3.14);  // true  
isSame("hello", "hello"); // true  
isSame([], []); // true  
isSame([1, 2], [1, 2]); // true  
isSame({ a : 1, b : 2}, {a : 1, b : 2}); //true  
isSame([1, {a:1}], [1, {a:1}]);  //true
Run Code Online (Sandbox Code Playgroud)

javascript

8
推荐指数
3
解决办法
9951
查看次数

为什么或如何证明JavaScript数组相等?

这个答案中,有一个简单的函数将返回包含原始值的数组的数组相等性.

但是,我不确定它为什么会起作用.这是功能:

function arrays_equal(a,b) { return !!a && !!b && !(a<b || b<a); }
Run Code Online (Sandbox Code Playgroud)

我对下半场最感兴趣; 这一点:

!(a<b || b<a)
Run Code Online (Sandbox Code Playgroud)

为什么<>比较数组时工作,但==不?

如何在JavaScript中使用少于和多于方法?

javascript arrays equality

8
推荐指数
2
解决办法
696
查看次数

打字稿中的对象平等

我在typescript中创建了一个关于向量的lib.我的第一次测试失败:).

它与TypeScript/JavaScript中的对象相等有关,但我找不到让测试变为绿色的方法.在typescript的官方文档http://www.typescriptlang.org/Handbook#classes中没有提到对象相等.

有人可以帮我一把吗?

这是源代码.

class Vector {
    x: number;
    y: number;

    constructor(x: number, y: number) {
        this.x = x;
        this.y = y;
    }

    add(that: Vector) {
        return new Vector(this.x + that.x, this.y + that.y);
    }
}

export = Vector;
Run Code Online (Sandbox Code Playgroud)

然后我对这个课进行了单元测试,如下所示

 var Vector = require("../lib/vector")

 describe("vector", function () {
  it("should add another vector", function () {
    var v1 = new Vector(1, 1);
    var v2 = new Vector(2, 3);
    expect(v1.add(v2)).toEqual(new Vector(3, 4));
  });
});
Run Code Online (Sandbox Code Playgroud)

执行时获得以下错误

Failures: 
1) vector should add …
Run Code Online (Sandbox Code Playgroud)

equality typescript

8
推荐指数
2
解决办法
2万
查看次数

如何根据是否选择动态更新MapMarker图像的集合?

最近我一直对此感到困惑,我希望根据是否选择/激活地图标记来动态更新地图标记图像(每个MapMarker都有一个类别引用活动图像或默认图像来自两个图像集合:interestIcons和interestIconsSelected.基本上我有一个MapMarkers集合,它们通过map标记集合进行映射.每个MapMarker都是MapView.Marker的子组件.

我想将所有MapMarkers渲染为默认的非选择/非活动状态,其中包含来自interestIcons的默认图像,当选中时,MapMarker图像应该从interestIconsSelected更改为活动图像,当选择另一个MapMarker时,之前选择的应该是恢复为默认图像,新的应更改为所选图像.

目前,我能够使用默认图像渲染地图标记,但是当选择地图标记时,图像似乎不会立即更改,除非您再次缩小/放大,即导致某种重新渲染,我想这样点击MapMarker会立即导致图像更新.

MapScreen.js: 通过地图渲染所有MapView.Marker MapMarkers的MapView.

        <MapView
            ref={map => { this._map = map }}
            style={Styles.Map.map}
            initialRegion={this.props.region}
            onRegionChange={this.handleRegionChange}
        >
            {
                this.props.events
                    .filter(this.eventFilterTimeNearFuture)
                    .filter(this.eventFilterTimeNotPast)
                    .filter(this.eventFilterDistance)
                    .filter(this.eventFilterInterest)
                    .map(e =>
                        <MapView.Marker
                            key={e.id}
                            onPress={() => this.handleLocationPush(e)} // Set selected event state
                            coordinate={e.location}
                        >
                            <MapMarker
                                event={e}
                                size={this.state.markerSize}
                                selected={this.state.selectedEvent} // The selected event set by state call.
                            />
                        </MapView.Marker>
                    )
            }
            { !this.props.regionMock &&
                <MapView.Marker
                    key={'userLocation'}
                    coordinate={this.props.region}
                >
                    <MapMarker size={'user'} />
                </MapView.Marker>
            }
        </MapView>
Run Code Online (Sandbox Code Playgroud)

MapMarker.js

import {interestIcons, interestColors, interestIconsSelected} from "../../utils/Icons";

import {Styles} from '../../StyleProvider';

class MapMarker …
Run Code Online (Sandbox Code Playgroud)

reactjs react-native airbnb-js-styleguide react-native-maps

8
推荐指数
1
解决办法
624
查看次数

jQuery/JavaScript JSON对象比较

有可能比较两组json对象的差异吗?我所拥有的是一个通过jquery $ post()轮询JSON对象的脚本.我想要做的是获取刚刚轮询的对象并将其与存储的对象进行比较.如果从一个到另一个的任何变化将它们应用于存储的对象或替换它(以任何一种方式),但是从我正在使用的UI角度来看,通过找到它们之间的差异,无缝地将更改应用于JSON对象的用途. 2.我想这样做是因为我现在拥有它所以UI完全按照轮询重新加载,无论是否发生变化,从UX角度来看基本上都是**.

我想如果我能找到两个对象之间的差异,我将启动一个函数,我将编辑特定于差异的UI.

javascript jquery json

7
推荐指数
2
解决办法
2万
查看次数

确定node.js中JSON格式对象的相等性

在node.js中比较两个JSON格式的对象数据的最有效方法是什么?

这些对象不包含"undefined"或函数,它们的原型是Object.

我听说如果在node.js中有JSON,那么有很好的支持

json node.js

7
推荐指数
1
解决办法
2万
查看次数

JSON对象!= JavaScript对象?

为方便起见,我编写了一个简单的toJSON原型,用于处理我知道安全的JSON:

String.prototype.toJSON = function () {
    return JSON.parse(this.valueOf());
};
Run Code Online (Sandbox Code Playgroud)

我在测试我的网络服务时使用它.不幸的是,即使这个简单的测试

var v0 = '{"echo":"hello_world"}'.toJSON(), v1 = {"echo": "hello_world"};
Run Code Online (Sandbox Code Playgroud)

它失败:

console.log(v0 == v1);            // false
console.log(v0 === v1);           // false
console.log(v0.echo == v1.echo);  // true
console.log(v0.echo === v1.echo); // true
Run Code Online (Sandbox Code Playgroud)

我不知道导致这个问题的JavaScript是什么?

javascript json javascript-engine object-equality to-json

6
推荐指数
1
解决办法
176
查看次数

检查集合是否包含Javascript中的列表

我有一套我已经添加了一个列表.

var a = new Set();
a.add([1]);
Run Code Online (Sandbox Code Playgroud)

现在我检查是否[1]存在于a:

a.has([1]);
> false
Run Code Online (Sandbox Code Playgroud)

根据规范,这可能会发生,因为如果要比较的两个对象的类型相同:

如果x和y引用同一个对象,则返回true.否则,返回false.

这也发生了:

[1] == [1]; 
> false
Run Code Online (Sandbox Code Playgroud)

因此,它可能是设置.has()==比较平等的(不知道虽然)..contains()JS中的Set()有像Java一样的方法吗?

javascript set ecmascript-6

6
推荐指数
2
解决办法
6047
查看次数

在JQuery中,为什么$(this)== $(this)返回false?

我在我的控制台中运行了以下行(一旦加载了jquery脚本),并收到以下结果:

$(this)
> [Window]
$(this) != $(this)
> true
$(this) == $(this)
> false
$(this) === $(this)
> false
Run Code Online (Sandbox Code Playgroud)

而且我不知道采取什么措施来弄清楚发生了什么.我的猜测是,有一些对象持有基于时间的值正在改变,但我想知道它是否有所不同.我会尝试在此期间比较这些值,但我希望有人可能会理解这里发生了什么.

编辑以解决我不知道$(arg)的底层实现的问题.我不知道它返回了一个新的引用对象.因此,我不相信这是"如何确定两个JavaScript对象的相等性?"的副本.

javascript jquery

6
推荐指数
1
解决办法
120
查看次数