相关疑难解决方法(0)

如何确定两个JavaScript对象的相等性?

严格的相等运算符将告诉您两个对象类型是否相等.但是,有没有办法判断两个对象是否相等,就像 Java中的哈希码一样

Stack Overflow问题JavaScript中是否有任何类型的hashCode函数?类似于这个问题,但需要更多的学术答案.上面的场景说明了为什么需要有一个,我想知道是否有任何等效的解决方案.

javascript equals object hashcode

599
推荐指数
23
解决办法
45万
查看次数

如何深度合并而不是浅合并?

无论Object.assign对象传播只能做一浅合并.

问题的一个例子:

// No object nesting
const x = { a: 1 }
const y = { b: 1 }
const z = { ...x, ...y } // { a: 1, b: 1 }
Run Code Online (Sandbox Code Playgroud)

输出是你所期望的.但是如果我试试这个:

// Object nesting
const x = { a: { a: 1 } }
const y = { a: { b: 1 } }
const z = { ...x, ...y } // { a: { b: 1 } }
Run Code Online (Sandbox Code Playgroud)

代替

{ a: …
Run Code Online (Sandbox Code Playgroud)

javascript spread-syntax

289
推荐指数
22
解决办法
14万
查看次数

如何计算JavaScript对象的属性?

假设我在JavaScript中有以下对象:

var object = {
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}; 
Run Code Online (Sandbox Code Playgroud)

如何找出对象中存在多少个值?

javascript object

160
推荐指数
6
解决办法
24万
查看次数

在对象数组上使用下划线的"差异"方法

_.difference([], [])
Run Code Online (Sandbox Code Playgroud)

当我有原始类型数据时,这种方法工作正常

var a = [1,2,3,4];
var b = [2,5,6];
Run Code Online (Sandbox Code Playgroud)

并且_.difference(a,b)呼叫返回[1,3,4]

但万一我正在使用像

var a = [{'id':1, 'value':10}, {'id':2, 'value':20}];
var b = [{'id':1, 'value':10}, {'id':4, 'value':40}];
Run Code Online (Sandbox Code Playgroud)

似乎不起作用

javascript underscore.js

39
推荐指数
3
解决办法
5万
查看次数

如何获取两个JavaScript对象图之间的差异列表?

我希望能够获得两个JavaScript对象图之间所有差异的列表,以及发生增量的属性名称和值.

对于它的价值,这些对象通常作为JSON从服务器中检索,并且通常只有少数深层(即它可能是一个对象数组,它们本身具有数据,然后是与其他数据对象一起的数组).

我想不仅要看到基本属性的更改,还要看到数组成员数量的差异等.

如果我没有得到答案,我可能最终会自己写这篇文章,但希望有人已经完成了这项工作或者知道有人.


编辑:这些对象通常在结构上彼此非常接近,所以我们不是在讨论彼此完全不同的对象,而是可能有3或4个增量.

javascript diff json data-structures

16
推荐指数
5
解决办法
4万
查看次数

使用Javascript/JQuery在JSON对象中的差异

我在Javascript中有两个JSON对象,除了数值之外都是相同的.它看起来像这样:

var data = {
  "eth0":{"Tx":"4136675","Rx":"13232319"},
  "eth1":{"Tx":"4","Rx":"0"},
  "lo":{"Tx":"471290","Rx":"471290"}
}

var old = {
  "eth0":{"Tx":"4136575","Rx":"13232219"},
  "eth1":{"Tx":"4","Rx":"0"},
  "lo":{"Tx":"471290","Rx":"471290"}
}
Run Code Online (Sandbox Code Playgroud)

一个名为"data"的对象具有当前值,另一个名为"old"的对象具有1秒前的相同值.我想输出一个只有值更改的JSON对象,这样我就可以计算网络接口上的数据吞吐量.

var throughput = {
  "eth0":{"Tx":"100","Rx":"100"},
  "eth1":{"Tx":"0","Rx":"0"},
  "lo":{"Tx":"0","Rx":"0"}
}
Run Code Online (Sandbox Code Playgroud)

我不确定如何遍历JSON数据 - 它可以用于任何数量的接口.

有人可以借给我一个手吗?提前致谢

javascript jquery json

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

如何将这个嵌套对象转换为扁平对象?

对不起,我不知道怎么用短语来标题.请尽可能帮助编辑.

我有一个像这样的对象:

{
    a: 'jack',
    b: {
        c: 'sparrow',
        d: {
           e: 'hahaha'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想让它看起来像:

{
    'a': 'jack',
    'b.c': 'sparrow',
    'b.d.e': 'hahaha'
}

// so that I can use it this way:
a['b.d.e']
Run Code Online (Sandbox Code Playgroud)

jQuery也可以.我知道嵌套对象,我可以用a.b.d.e得到hahaha,但是今天我不得不使用它像a['b.d.e']-_- !!! 我怎样才能做到这一点?提前致谢 :)

javascript jquery

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

JavaScript-返回两个对象之间的差异?

有人可以告诉我如何在比较这种情况时返回新数据。使用香草JavaScript。

{
    "48": "{\"sid\":\"48\",\"name\":\"title 1\"}",
    "77": "{\"sid\":\"77\",\"name\":\"The blahblah title\"}"
}
Run Code Online (Sandbox Code Playgroud)

与此相比

{
    "48": "{\"sid\":\"48\",\"name\":\"title 1\"}",
    "77": "{\"sid\":\"77\",\"name\":\"The blahblah title\"}",
    "83": "{\"sid\":\"83\",\"name\":\"The blahblah derp\"}",
    "87": "{\"sid\":\"87\",\"name\":\"The derpy title 4\"}"
}
Run Code Online (Sandbox Code Playgroud)

它应该只返回差异。

{
    "83": "{\"sid\":\"83\",\"name\":\"The blahblah derp\"}",
    "87": "{\"sid\":\"87\",\"name\":\"The derpy title 4\"}"
}
Run Code Online (Sandbox Code Playgroud)

javascript object

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

使用angular标记列表中的已修改元素

我想同步数据,因此我有一个包含当前状态的数据对象.当这个改变时,我想在对象上设置一个属性,以便我可以在同步时通过它进行过滤.对象结构是:

data = {  
type1: [  
  {a:"a", b:"b"},...  
]  
type2: [  
  {c:"c", d:"d"},...  
]  
}  
Run Code Online (Sandbox Code Playgroud)

例如,如果data.type1 [0] .a ="test"将完成,我想将modified:true添加到对象,以便它将是

{a:"test", b:"b", modified:true}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过$ watch(data,function(),true)但是我找不到如何看到哪个对象被更改并且搜索给定的数据对象将是一个很大的开销.$ watchcollection(只是在寻找添加/删除时)也没有给出索引.
有没有办法找出哪个对象被改变了?或者是否有其他图书馆可以很好地做到这一点?

谢谢

编辑:
我创建了一个jsfiddle:https://jsfiddle.net/yfo8xwah/

javascript synchronization angularjs

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

使用es6从两个对象中获取差异对象

我试图找出使用 es6 获取两个对象之间的交集对象的最佳方法是什么。我的意思是:

a = {a:'a',b:'b',c:'c', d:'d'};
b = {a:'a',b: '1', c:'c', d:'2', f'!!!'}
// result I want:
c = getDifference(a,b)
//c is now: {b:'1', d:'2'}
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以使用 es6 来做到这一点,或者我是否需要使用 for(in) 和 Object.keys() 迭代 a 对象并进行比较,将交集分配给 c?

(a,b) => {
    const c = {};
    for(const _key in Object.keys(a)){
       if(b[_key] && b[_key] !== a[_key]){
           c[_key] = b[_key];
       }
    }
    return c;
}
Run Code Online (Sandbox Code Playgroud)

我知道 loadash/underscore 有这些类型的辅助函数...但是尝试看看 es6 是否有任何新的短语法,如果没有,使用 vanilla js 执行此操作的最短方法是什么。

javascript object ecmascript-6 ecmascript-2016

5
推荐指数
2
解决办法
9631
查看次数